【问题标题】:perl + append text between two lines in fileperl + 在文件的两行之间追加文本
【发布时间】:2023-03-26 19:55:02
【问题描述】:

我需要编辑文件,主要问题是在文件的两个已知行之间附加文本

例如我需要附加以下文本

   a b c d e f 

   1 2 3 4 5 6

   bla bla

在第一行和第二行之间

 first_line=")"

 second_line="NIC Hr_Nic ("

perl 如何做到这一点?

莉迪亚

【问题讨论】:

  • 对 StackOverflow.com 来说可能是一个更好的问题...

标签: perl


【解决方案1】:

假设你对 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

【讨论】:

    【解决方案2】:

    您可以在临时文件中插入:

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-28
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      • 2014-07-26
      • 2014-06-22
      • 2017-05-22
      相关资源
      最近更新 更多