代码之家  ›  专栏  ›  技术社区  ›  WilliamKF

如何在文件中搜索模式并从匹配点到文件末尾获取新文件?

  •  2
  • WilliamKF  · 技术社区  · 14 年前

    我需要一个文件,并找到作为文件完整行的文本字符串模式的第一个匹配项:

    Acknowledgments:
    

    然后我想创建一个从匹配行一直到文件结尾的新文件。

    我希望Perl是一个很好的方法,但是我不是Perl的人,或者说Sed是一个很好的方法?

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

    2 回复  |  直到 14 年前
        1
  •  5
  •   Adam Rosenfield    14 年前

    下面是一种使用SED的方法:

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

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

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

        2
  •  3
  •   Zaid    14 年前

    珀尔

    这是一个脚本,应该实现你想要的。

    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 One衬板:

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