Grep OR — Grep AND — Grep NOT — Несколько Условий

Самыми распространенными утилитами для парсинга файлов в Linux являются команды grep, egrep, sed и awk.

Из данной статьи вы узнаете, как выполнить поиск строк в файле по нескольким условиям, которые задаются логическими операторами OR, AND, NOT с помощью grep, egrep, sed и awk из командной строки в Linux.

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

Дельный Совет: Поиск и валидация email адресов с помощью команды grep! Лучшее регулярное выражение для поиска email адресов! Читать далее →

GREP OR: Любое Из Нескольких Условий

Поиск строк в файле, в которых содержится любое из перечисленных регулярных выражений.

Используя команду grep и egrep:

$ grep "ВЫРАЖЕНИЕ1\|ВЫРАЖЕНИЕ2" FILE
$ grep -E "ВЫРАЖЕНИЕ1|ВЫРАЖЕНИЕ2" FILE
$ grep -e ВЫРАЖЕНИЕ1 -e ВЫРАЖЕНИЕ2 FILE
$ egrep "ВЫРАЖЕНИЕ1|ВЫРАЖЕНИЕ2" FILE

Используя команду awk:

awk '/ВЫРАЖЕНИЕ1|ВЫРАЖЕНИЕ2/' ФАЙЛ

Используя команду sed:

sed -e '/ВЫРАЖЕНИЕ1/b' -e '/ВЫРАЖЕНИЕ2/b' -e d ФАЙЛ

GREP AND: Каждое Из Условий

Также, очень часто возникает необходимость grep-нуть файл по нескольким условиям — это когда нужно найти все строки в файле, которые соответствуют каждому из нескольких регулярных выражений.

Обратите внимание, что вы можете осуществить поиск строк в файле которые содержат регулярные выражения, как в определенном, так и в произвольном порядке.

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

Используя команду grep (в такой последовательности):

$ grep -E 'ВЫРАЖЕНИЕ1.*ВЫРАЖЕНИЕ2' ФАЙЛ

Используя команду grep (в любой последовательности):

$ grep -E 'ВЫРАЖЕНИЕ1.*ВЫРАЖЕНИЕ2|ВЫРАЖЕНИЕ2.*ВЫРАЖЕНИЕ1' ФАЙЛ
$ grep 'ВЫРАЖЕНИЕ1' ФАЙЛ | grep 'ВЫРАЖЕНИЕ2'

Дельный Совет: На сервере закончилась память? Узнайте какой процесс съел всю RAM и SWAP! Одна строка на Bash для настоящих Linux админов! Читать далее →

Используя команду awk (в такой последовательности):

$ awk '/ВЫРАЖЕНИЕ1.*ВЫРАЖЕНИЕ2/' ФАЙЛ

Используя команду awk (в любой последовательности):

$ awk '/ВЫРАЖЕНИЕ1/ && /ВЫРАЖЕНИЕ2/' ФАЙЛ

Используя команду sed (в такой последовательности):

$ sed '/ВЫРАЖЕНИЕ1.*ВЫРАЖЕНИЕ2/!d' ФАЙЛ

Используя команду sed (в любой последовательности):

$ sed '/ВЫРАЖЕНИЕ1/!d; /ВЫРАЖЕНИЕ2/!d' ФАЙЛ

GREP NOT: Исключение

Дельный Совет: Поиск и валидация IP адресов с помощью команды grep! Лучшее регулярное выражение для поиска IP адресов Читать далее →

Поиск и печать строк из файла, которые не содержат указанное регулярное выражение.

Используя команду grep:

grep -v 'ВЫРАЖЕНИЕ1' ФАЙЛ

Используя команду awk:

awk '!/ВЫРАЖЕНИЕ1/' ФАЙЛ

Используя команду sed:

sed -n '/ВЫРАЖЕНИЕ1/!p' ФАЙЛ