Читать файл для определенной строки и читать строки после совпадения - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть файл, который выглядит так:

AA  
2   
3  
4  
CCC  
111  
222  
333  
XXX  
12  
23  
34

Я ищу команду awk для поиска строки 'CCC' сверху и печати всех строк, которые появляются после 'CCC', но прекращают чтение, как только я достигну 'XXX'.

Очень простая команда выполняет чтение для меня, но не останавливается на XXX.

awk '$0 == "CCC" {i=1;next};i && i++' c.out

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

«Сделайте что-то между этим и тем» можно легко решить с помощью шаблона range :

awk '/CCC/,/XXX/' # prints everything between CCC and XXX (inclusive)

Но это не совсем то, что вы спросили. Вы хотели напечатать все после CCC и выйти (прекратить чтение) на XXX. Это переводится как

awk '/XXX/{exit};f;/CCC/{f=1}'
0 голосов
/ 05 сентября 2018

Не могли бы вы попробовать следующее.

Решение 1-е: С sed.

sed -n '/CCC/,/XXX/p'  Input_file

Решение 2-е: С awk.

awk '/CCC/{flag=1} flag; /XXX/{flag=""}'  Input_file

Решение 3-е: Если вы хотите печатать из строки CCC до XXX, но не из этих строк, выполните следующие действия.

awk '/CCC/{flag=1;next} /XXX/{flag=""} flag' Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...