Linux: работа с утилитой grep (egrep, zgrep)

word

-w/–word-regexp – удобная опция, ищем конкретное слово. Очень удобно, если есть уникальные слова в каждой строке (напр. ID).

 -w, --word-regexp
The expression is searched for as a word (as if surrounded by
`[[:<:]]' and `[[:>:]]'; see re_format(7)).

$ cat sw
1 -- xxx
2 -- yyy
3 -- zzz
4 -- kkk
5 -- zzz

$ cat sw | grep -w 2
2 -- yyy

$ cat sw | grep -w yyy
2 -- yyy

or/and

OR – ищем любой из двух. При любом подпадании из двух выводим, если попали оба – выводим оба результата.

grep 'INTEGER: 1\|INTEGER: 2' test

no

grep –invert-match – делаем grep строк с значением НЕэталон

$ cat >sw
1
2
3

$ cat sw | grep --invert-match 1
2
3

recursive

Ищем во всех подпапках, не только в текущей

grep -r limit *

zgrep

Используется для поиска в архивированных файлах

egrep

Что-то простое можно сделать через простой grep.

grep "Ищем [2-3] диапазон 2-3" test_file

Что-то более сложное уже потребует включения extended-regexp через grep -E или используя alias egrep:

grep -oE '\((.+)\)
  • -E – включение использования расширенных регулярных выражений в grep
  • -o – показываем только то, что подпало под regexp, а не всю строку, очень полезная вещь когда нужно что-то выделить, а остальное отбросить
  • -E – включение использования расширенных регулярных выражений в grep
  • -o – показываем только то, что подпало под regexp, а не всю строку, очень полезная вещь когда нужно что-то выделить, а остальное отбросить

Найти во всей директории pattern. Не следует запускать его на корень (/) т.к. работать будет очень долго.

~$ grep -inr 'pattern' . >res

Leave a Reply