Как запустить несколько команд AND в команде grep

Я пытаюсь запустить несколько команд И в команде grep, я смог запустить с использованием двух шаблонов:

grep -E 'pattern1.*pattern2' filename

Можно ли использовать три или четыре шаблона с использованием вышеуказанного метода?

  • Как бы я grep для записи файла паролей без использования 'username'
  • pgrep и pkill альтернативы на mac os x?
  • Спецификация Solaris ps aux comand. Почему для grep необходимо использовать параметр ww?
  • Как включить все до Colon в Sed / Grep / ...?
  • сценарий оболочки для чтения из нескольких файлов параллельно
  • выражение поиска grep и файл переименования
  • Печать строк из одного файла, если их часть отображается в другом. Оба файла имеют длину в миллионы строк
  • Что означает dd в ls -l | grep ^ d?
  • 2 Solutions collect form web for “Как запустить несколько команд AND в команде grep”

    Если порядок шаблонов исправлен, вы можете легко использовать grep как в:

     grep -E 'pattern1.*pattern2.*pattern3' 

    Но в случае, если все шаблоны должны присутствовать, и они могут появляться в любом порядке, тогда вы получаете комбинаторную сложность; например, для двух шаблонов:

     grep -E '(pattern1.*pattern2|pattern2.*pattern1)' 

    (и для трех моделей у вас будет уже восемь комбинаций).

    В таких случаях (т. grep При использовании grep ) лучше каскадировать вызовы в конвейере одного экземпляра grep каждого шаблона:

     grep pattern1 <infile | grep pattern2 | grep pattern3 

    Каждый экземпляр будет фильтровать только строки, соответствующие их шаблону, и общий результат будет содержать только строки, которые имеют все шаблоны.

    Лучший подход, который приводит к самому четкому решению, – использовать awk :

     awk '/pattern1/ && /pattern2/ && /pattern3/' 

    где упорядочение не имеет значения в таком выражении.

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

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