2

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

Acknowledgments:

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

我希望 perl 是做到这一点的好方法,但我不是 perl 人,或者 sed 是一个好方法?

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

4

2 回答 2

5

这是使用 sed 的一种方法:

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

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

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

于 2010-05-22T16:00:53.137 回答
3

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
于 2010-05-22T16:11:50.097 回答