печатать слова между двумя узорами - PullRequest
0 голосов
/ 28 апреля 2018

Как напечатать строки, которые точно соответствуют слову между двумя шаблонами?

Я использую:

echo "CMDM." | awk 'string one ttt/{flag=1;next}/string two ttt/{flag=0}flag' <file>

Итак, мне нужно напечатать строки, содержащие слово «CMDM». между строк строка один ттт и строка два ттт несколько раз до EOF.

1 Ответ

0 голосов
/ 28 апреля 2018

Ваш пример не имеет смысла. Вы выводите что-то в awk, а затем awk читает файл, игнорируя то, что вы повторили.

В любом случае, кажется, что вы ищете что-то вроде:

$ awk '/string one ttt/{flag=1;next}/string two ttt/{flag=0}flag && /CMDM/' inputfile

Если вам нужно объединить трубу и файл в awk, вы можете сделать это следующим образом:

$ echo "something" |awk '{print}' file1 - 
# the dash in the end means read from stdin. 
# awk will treat stdin as a second file which will be processed after the first file.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...