Я хочу напечатать все строки из файла до совпадения, пожалуйста, совет, как сделать это с помощью awk
например
Я хочу напечатать все строки до слова PPP
заметьте, что первая строка должна отличаться от AAA (любое слово)
cat file.txt
AAA ( the first line/word chuld be any word !!!!! )
BBB
JJJ
OOO
345
211
BBB
OOO
OOO
PPP
MMM
(((
&&&
так что мне нужно получить это
AAA
BBB
JJJ
OOO
345
211
BBB
OOO
OOO
PPP
другой пример (хочу напечатать до KJGFGHJ)
cat file.txt1
HG
KJGFGHJ
KKKK
поэтому мне нужно получить
HG
KJGFGHJ
sed
:sed '/PPP/q' infile
awk
, поэтому я не даю другим инструментам.1
это как{print $0}
. Также обратите внимание, что//
это пустой шаблон и результат не указан. Это работа вgawk
,mawk
Brian Kernighan собственной версии, но не вnawk
,oawk
из сундука с инструментами семейной реликвии.В качестве альтернативы используйте шаблон диапазона, соответствующий первой строке (NR, равный 1), до первого совпадения 'PPP' в строке
если линия должна точно соответствовать «PPP», используйте только
Если вы хотите сделать то же самое для каждого файла в списке аргументов, используйте переменную FNR, которая сбрасывается в 1 для первой строки каждого обработанного файла
источник
Как сказал OP, его первая строка или слово файла может содержать любое слово (например,
PPP
само по себе), поэтому вам нужно проверить это и отсканировать первую строку от совпадения и избежатьawk
выхода из нее.Тогда вы можете попробовать это:
Входной файл:
Команда:
Вывод:
источник