我需要编辑文件,主要问题是在文件中的两个已知行之间附加文本
例如我需要附加以下文字
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执行此操作?
利迪娅
答案 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;