Как обрезать файл журнала с помощью команды grep - PullRequest
0 голосов
/ 03 октября 2018

Например: если ниже содержимое моего файла журнала, я хочу сохранить только содержимое между первым вхождением значения '2018' и последним вхождением '2018'

sssssssssssssssssssss
ddddddddddddddddddddd
2018fffffffffffffffff
dddddd2018ddddddddddd
wwww2018wwwwwwwwwwwww
aaaaaaaaaaaa2018aaaaa

Вывод долженбыть:

2018fffffffffffffffff
dddddd2018ddddddddddd
wwww2018wwwwwwwwwwwww
aaaaaaaaaaaa2018

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Проверьте это решение Perl

> cat 2018_match
sssssssssssssssssssss
ddddddddddddddddddddd
2018fffffffffffffffff
dddddd2018ddddddddddd
wwww2018wwwwwwwwwwwww
aaaaaaaaaaaa2018aaaaa
> perl -e ' BEGIN { $x=qx(cat 2018_match);$x=~s/(.+?)(2018.+2018)(.+)/$2/osmg; print "$x\n" ; exit } '
2018fffffffffffffffff
dddddd2018ddddddddddd
wwww2018wwwwwwwwwwwww
aaaaaaaaaaaa2018
>
0 голосов
/ 03 октября 2018

Если файл не слишком большой, вы можете сделать это с помощью GNU grep и флага -z.От grep.info:

‘-z’
‘--null-data’
     Treat input and output data as sequences of lines, each terminated
     by a zero byte (the ASCII NUL character) instead of a newline.
     Like the ‘-Z’ or ‘--null’ option, this option can be used with
     commands like ‘sort -z’ to process arbitrary file names.

Например:

grep -zo '2018.*2018' infile

Выход:

2018fffffffffffffffff
dddddd2018ddddddddddd
wwww2018wwwwwwwwwwwww
aaaaaaaaaaaa2018
...