【问题标题】:How to search a file for a pattern and get a new file from the match point to end of file?如何在文件中搜索模式并从匹配点到文件末尾获取新文件?
【发布时间】:2010-05-23 02:09:05
【问题描述】:

我需要获取一个文件并找到第一次出现的文字字符串模式作为文件的完整行:

Acknowledgments:

然后我希望从匹配行一直到文件末尾创建一个新文件。

我希望 perl 是一个很好的方法,但我不是一个 perl 人,或者 sed 可能是一个好方法?

请提出一种在 Unix 中可靠地完成此任务的简单方法。

【问题讨论】:

    标签: perl unix sed file-processing


    【解决方案1】:

    这是使用 sed 的一种方法:

    sed -n '/^Acknowledgements:$/,$p' input-file > output-file
    

    -n 选项禁止将输入打印到输出。 /^Acknowledgements:$/,$ 部分是地址范围规范,表示从匹配正则表达式 ^Acknowledgements:$ 的行到文件末尾 ($),然后将这些行打印出来 (p) 到输出。

    如果您希望输入文件和输出文件相同,您还需要指定-i 选项来告诉 sed 就地编辑。

    【讨论】:

      【解决方案2】:

      Perl

      这是一个应该实现您所追求的脚本。

      use strict;
      use warnings;
      
      open my $input,  '<', 'inputFile.txt';   # Open handle to input file 
      open my $output, '>', 'output.txt';      # Open handle to output file
      
      while (<$input>) {
          
          next if /^Acknowledgments:$/ .. 0;
          
          chomp $_;
          print $output $_,"\n";
      }
      
      close $input;
      close $output;
      

      下面是等效的 Perl 单行代码:

      perl -ne 'print if /^Acknowledgments$/ .. 0' inputFile > outputFile
      

      【讨论】:

      • 这个触发器操作员是邪恶的
      • 请编辑以便我投票,我不小心撤消了,现在我无法重新投票了。
      猜你喜欢
      • 1970-01-01
      • 2020-10-12
      • 2011-03-26
      • 1970-01-01
      • 2019-10-13
      • 2019-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多