2010-08-11 2 views
0

мне нужно отредактировать файл, основная проблема состоит в добавлении текста между двумя известными линиями в файлеPerl + добавить текст между двумя строками в файле

, например, мне нужно добавить следующий текст

a b c d e f 

    1 2 3 4 5 6 

    bla bla 

Между first_line и second_line

first_line=")" 

second_line="NIC Hr_Nic (" 

Как это сделать с помощью Perl?

Lidia

+0

Может быть лучше вопрос StackOverflow.com ... – JNK

ответ

0

Если у вас есть минимальное знание Perl, вы можете использовать решение this question читать весь файл (при условии, что это не слишком большой) в массиве, а затем вы можете просто добавить новую строку как элемент в правильном положении (и переписать его обратно в файловую систему).

Если вы не знаете, как написать файл обратно, здесь речь идет о:

open FH, ">>$file_name" or die "can't open '$file_name': $!"; # <<<< outside the loop 
foreach (@your_array) 
{ 

    print FH $_; 

} 
close FH; # <<<<<<<< outside the loop 
0

Вы можете сделать вставку во временный файл:

use strict; 
use warnings; 

open my $in, '<', 'file_in' or die "can't open 'file_in' for reading : $!"; 
open my $out, '>', 'file_out' or die "can't open 'file_out' for writing : $!"; 
my $previous = ''; 
while(my $line=<$in>) { 
    chomp($line); 
    if($previous eq ')' && $line eq 'NIC Hr_Nic (') { 
     print $out "$previous\na b c d e f\n1 2 3 4 5 6\nbla bla\n"; 
    } elsif($previous ne '') { 
     print $out $previous,"\n"; 
    } 
    $previous = $line; 
} 
print $out $previous; 
close $in; 
close $out; 
Смежные вопросы