Как объединить эти два grep-регулярных выражения

У меня есть два регулярных выражения grep

grep -e '[Yy].*[Yy].[Ee][Ee]' first.txt 

а также

  • Как группировать результаты grep?
  • Печать нескольких строк после n-го появления в bash
  • Использование \ $ в конце имени переменной передается grep
  • Согласование шаблонов по нескольким строкам
  • Как сделать OR grep (с разными настройками GREP_COLOR)
  • Bash-completion и grep
  •  grep -e '[Ee][Ee].*[Yy].*[Yy]' first.txt 

    Как объединить эти два в одно регулярное выражение?

  • какую команду я буду использовать, чтобы увидеть все строки из файла, начиная с строки, которую я нашел с помощью grep
  • Выход grep cdrecord
  • Как восстановить файл tar, где stderr был смешан с stdout?
  • Рисунок Grep и шаблон в шаблоне
  • Как искать слово во всем содержимом каталога в linux
  • Необходимо проанализировать таблицу двойного входа с двумя парами
  • 2 Solutions collect form web for “Как объединить эти два grep-регулярных выражения”

    Посредством конкатенации шаблонов?

     grep -e '[Yy].*[Yy].[Ee][Ee][Ee][Ee].*[Yy].*[Yy]' first.txt 

    Или вы имели в виду, по сути дела, логическое И двух шаблонов?

    Если последнее, вам нужно подделать его, так как в то время как grep имеет встроенные OR ( | ) и NOT ( -v ; [^] ), он не имеет встроенного И. Один из способов заключается в том, чтобы вывести выход одного grep в другой:

     grep -e '[Yy].*[Yy].[Ee][Ee]' first.txt | grep '[Ee][Ee].*[Yy].*[Yy]' 

    Другой способ – искать оба шаблона последовательно, в любом порядке, с логическим ИЛИ (сокращенно для краткости):

     grep -Ee 'pattern1.*pattern2|pattern2.*pattern1' input.txt 

    Я считаю, что первое было более кратким и более легким в обслуживании.

    Вы можете использовать grep для обоих шаблонов сразу, используя \| между каждой моделью.

     grep -e '[Yy].*[Yy].[Ee][Ee]'\|'[Ee][Ee].*[Yy].*[Yy]' 
    Linux и Unix - лучшая ОС в мире.