perl +在文件中的两行之间附加文本

时间:2010-08-11 12:57:36

标签: 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执行此操作?

利迪娅

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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;