GREP: поиск с операторами AND (и), OR (или), NOT (не)

Автор: | 04/14/2014
 

terminalНаполним файл таким текстом:

$ a=0; b=2; while [[ $a -lt $b ]]; do a=$(($a+1)); echo $a >> 1.txt; done
$ cat 1.txt
1
2

GREP — Поиск с оператором OR

Теперь — с помощью grep выполним поиск с оператором OR:

$ grep "1|2" 1.txt
1
2

Другой вариант — с использованием опции -E (extended-regexp):

$ grep -E "1|2" 1.txt
1
2

И, конечно, раз тут используется regex — то можно сделать так:

$ grep -E "^1$|2" 1.txt
1
2

Ещё пример:

$ grep -e 1 -e 2 1.txt
1
2

С помощью egrep:

$ egrep "1|2" 1.txt
1
2

GREP — Поиск с оператором AND

Изменим файл:

$ sed 's/1/1 2/g' 1.txt > 2.txt
$ cat 2.txt
1 2
2

Ищем:

$ grep -E '1.*2' 2.txt
1 2
$ grep '1' 2.txt | grep '2' 2.txt
1 2
2

GREP — Поиск с оператором NOT

Правильнее, конечно, тут сказать «с опцией», а не «оператором».

Изменим файл:

$ echo 1 >> 2.txt
$ cat 2.txt
1 2
2
1
$ grep -v 1 2.txt
2