Intereting Posts
Поворот каждой другой страницы с помощью pdfjam Есть ли команда для перечисления сжатых размеров файлов для файлов в .zip-файле? Каков наиболее эффективный способ проверить, установлен ли узел в настоящее время? Создание файловой системы eCryptfs Есть ли более быстрый способ поиска определенных файлов, чем поиск? CUPS на FreeBSD: подходящие пути для ручного размещения отдельных файлов PPD Вызов Bash – backspace удаляет правый выровненный текст (можно остановить?) Команда Wrap в подсказке Низкий уровень громкости на материнской плате Z97 и Linux Mint KDE Используйте FOR Loop внутри END-блока команды awk Как разбить диск 22TB? Linux – при загрузке подключитесь к самым мощным беспроводным сетям Если netstat не отображает номера портов для иностранного адреса mmap () не удалось: невозможно выделить память – как узнать, кто жалуется? Как я могу искать / просматривать в памяти какого-либо процесса?

awk + печатать строки с первой строки до слова соответствия

Я хочу напечатать все строки из файла до слова соответствия, пожалуйста, совет, как это сделать с awk

например

Я хочу напечатать все строки до тех пор, пока слово PPP

обратите внимание на первую строку chuld diff от 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 

Пытаться:

 $ awk '1;/PPP/{exit}' file AAA BBB JJJ OOO 345 211 BBB OOO OOO PPP 

В качестве альтернативы используйте шаблон диапазона, соответствующий первой строке (NR, равный 1), до первого совпадения «PPP» в строке

 awk 'NR==1,/PPP/' file 

если строка должна точно соответствовать «PPP», используйте только

 awk 'NR==1,/^PPP$/' file 

Если вы хотите сделать то же самое для каждого файла в списке аргументов, используйте переменную FNR, которая сбрасывается до 1 для первой строки каждого обработанного файла

 awk 'FNR==1,/PPP/' file1 file2 ... 

Поскольку OP сказал, что его первая строка или слово файла могут содержать любое слово (например, PPP ), вам нужно проверить это и отменить первую строку от совпадения и избежать выхода awk из awk .

Затем вы можете попробовать следующее:

Входной файл:

 PPP # the first line/word chuld be any word !!!!! ) BBB $$$ JJJ OOO PPP 345 PPP %%% 

Команда:

 awk '1;/PPP/{if (NR>1) exit}' file 

Вывод:

 PPP # the first line/word chuld be any word !!!!! ) BBB $$$ JJJ OOO PPP