Как найти в файле шаблон и получить новый файл от точки совпадения до конца файла? - PullRequest
2 голосов
/ 22 мая 2010

Мне нужно взять файл и найти первое вхождение буквально-строкового шаблона в виде полной строки файла:

Acknowledgments:

А потом я хочу создать новый файл из строки совпадения вплоть до конца файла.

Я полагаю, что Perl - хороший способ сделать это, но я не очень люблю Perl, или, возможно, sed - хороший способ?

Пожалуйста, предложите простой способ надежного выполнения этого в Unix.

Ответы [ 2 ]

5 голосов
/ 22 мая 2010

Вот один из способов сделать это с помощью sed:

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

Опция -n подавляет печать ввода с выхода. Часть /^Acknowledgements:$/,$ - это спецификация диапазона адресов, в которой говорится, что она совпадает со строкой, соответствующей регулярному выражению ^Acknowledgements:$, до конца файла ($), а затем выводить эти строки (p) выход.

Если вы хотите, чтобы входной файл и выходной файл были одинаковыми, вам также нужно указать опцию -i, чтобы указать sed редактировать на месте.

3 голосов
/ 22 мая 2010

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...