Perl + добавить текст между двумя строками в файле - PullRequest
0 голосов
/ 11 августа 2010

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

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

   a b c d e f 

   1 2 3 4 5 6

   bla bla

Между первой линией и второй линией

 first_line=")"

 second_line="NIC Hr_Nic ("

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

Lidia

Ответы [ 2 ]

0 голосов
/ 24 августа 2010

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

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;
0 голосов
/ 11 августа 2010

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

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

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

    print FH $_;

}
close FH; # <<<<<<<< outside the loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...