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 

3 Solutions collect form web for “awk + печатать строки с первой строки до слова соответствия”

Пытаться:

 $ 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 
  • Unix Shell: назначение массива не работает
  • Включение двух команд в файл и вывод электронной почты
  • Ошибка в том, как ksh обрабатывает конвейеры?
  • ksh - вычесть 5 минут из текущего времени
  • Сохранение последних двух версий и удаление оставшихся
  • Сравните два массива в KSH и выведите разницу
  • Добавление Ctrl-L в качестве «чистой» горячей клавиши в ksh OpenBSD
  • PS1 для Bash + Korn
  • Многострочный запрос PS1
  • perl one liner + как соответствовать IP-адресу, который находится в поле файла first / sec
  • Как получить ответ от любого URL-адреса?
  • Interesting Posts

    Пользовательская установка для настраиваемого Debian Distro?

    обучение выходным пользовательским rsyslogs

    Можно ли настроить auth.log о том, какой ключ был использован?

    Сделать символическую ссылку на относительный путь

    Перемещение корневого раздела на другой диск

    Как исправить ошибку «Kernel panic – не синхронизация: VFS: невозможно монтировать root fs на неизвестном блоке» и «данные LZMA повреждены»

    Письма, отправленные с sendmail, переходят в спам

    Избегайте гашения дисплея под X

    Проблема с configure – не удается найти -lgcc_s

    Разрешения меняются с mkdir на mount

    Как сообщить «sed» на месте изменения

    Могу ли я проверить, работает ли create_ap?

    Почему у меня возникают проблемы с установкой Adobe Air на Linux Mint 14 и каково это решение?

    Резервное копирование и восстановление прав доступа к файлам

    Удерживать несколько пробелов, содержащих аргументы в одной переменной?

    Linux и Unix - лучшая ОС в мире.