Использование grep для чтения журнала для pattern1 в файле и печати только строк, содержащих pattern1. Прекратите поиск, когда pattern2 найден в файле

Используя grep/sed/awk я хочу искать pattern2 до pattern2 пор, пока pattern2 будет найден в файле и не распечатает результаты, содержащие только pattern1 .

Мне не нужны линии между диапазоном pattern1 и pattern2, для которого на этом сайте существует множество решений. Пожалуйста помоги.

Я пробовал следующее без каких-либо результатов:

adb logcat | grep -i 'pattern1' | grep -m 1 'pattern2'

Похож на '|' делает это AND condition и строки, которые я ищу, не находятся в одной строке. Они находятся в разных направлениях.

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

2 Solutions collect form web for “Использование grep для чтения журнала для pattern1 в файле и печати только строк, содержащих pattern1. Прекратите поиск, когда pattern2 найден в файле”

Используйте sed, чтобы остановить печать после нахождения шаблона2:

 adb logcat | sed '/pattern2/q' | grep -i 'pattern1' 

Или используйте sed для печати шаблона 1 и выйдите после pattern2:

 adb logcat | sed -n '/pattern1/p;/pattern2/q' 

Это можно сделать с помощью одного вызова sed:

 adb logcat | sed -n '/pattern2/q; /pattern1/p' 

В качестве альтернативы это можно сделать с помощью одного вызова awk :

 adb logcat | awk '/pattern2/{exit} /pattern1/' 
  • Как я могу разбить эту строку?
  • Как конкатенировать идентификатор, указанный в двух строках?
  • Модификация текстовых файлов через ssh с помощью Python - производительность
  • Правильный способ избежать вызова подпроцесса в python
  • Каковы различия между Perl, Python, AWK и sed?
  • Как сказать python не интерпретировать хеш-символ как комментарий?
  • Создание нескольких CSV-файлов из данных в файле csv
  • Как использовать регулярное выражение python для замены с помощью захваченной группы?
  • Python - лучший язык программирования в мире.