Операция ИЛИ
grep \|
grep 'слово1\|слово2' файл_данных.txt
grep -E (расширенный regexp) и эквивалентный ему egrep
grep -E 'слово1|слово2' файл_данных.txt egrep 'слово1|слово2' файл_данных.txt
grep -e
grep -e слово1 -e слово2 файл_данных.txt
Операция И
grep -E
grep -E 'слово1.*слово2' файл_данных.txt
(в только таком порядке)
grep -E 'слово1.*слово2|слово2.*слово1' файл_данных.txt grep -E 'слово1' файл_данных.txt | grep -E 'слово2'
(независимо от порядка)
Операция НЕ
grep -v
grep -v 'слово1' файл_данных.txt
Регулярные выражения
Регулярные выражения состоят из двух типов символов: обычные символы языка и метасимволы, позволяющие усилить мощность выражений. Рассмотрим текстовый файл, содержащий перечисленные через запятую страны, их население и континент расположения:
$ cat country.txt India,1014003817,Asia Italy,57634327,Europe Yemen,1184300,Asia Argentina,36955182,Latin America Brazil,172860370,Latin America Cameroon,15421937,Africa Japan,126549976,Asia
Метасимволы ^ и $ указывают на начало и конец шаблона выражения:
$ egrep '^I' country.txt India,1014003817,Asia Italy,57634327,Europe $ egrep 'e$' country.txt Italy,57634327,Europe
Метасимвол точка (.) позволяет задать любой один символ в выражении, а обрамление в квадратные скобки []
указывает на наличие одного из шаблонов внутри скобов. Например, выбрать из файла все страны, начинающиеся на I или J с длиной 5 букв, можно так:
$ egrep '^[IJ]....,' country.txt India,1014003817,Asia Italy,57634327,Europe Japan,126549976,Asia
Вместо 5 подряд точек можно указать их количество с помощью фигурных скобок {} (или квантификатора):
$ egrep '^[IJ].{4},' country.txt
Аналогично, можно задать вилку количества символов в шаблоне, например от 4 до 6:
$ egrep '^[IJ].{4,6},' country.txt
Для некоторых квантификаторов существуют короткие замены. Так, {0,1} эквивалентно ?, {0,} — *, {1,} — +, поэтому следующие две команды идентичны:
$ egrep '^ab{0,1}c$' filename $ egrep '^ab?c' filename
Использование ^ вместе с […] дает отрицание. Выбрать все страны, не начинающиеся на I или J:
$ egrep '^[^IJ]' country.txt Yemen,1184300,Asia
Вывести содержимое файла без пустых и начинающихся с «#» строк (применимо к файлам конфигурации) можно с помощью следующих команд:
grep -vE '^#|^$' файл_данных.txt grep "^[^#]" файл_данных.txt grep "^[$#]" файл_данных.txt
Ссылки: