Site Tools


grep
  • -C 2 #Где нашло + еще 2 строчки до и после найденной строчки
  • -B 2 #Где нашло + еще 2 строчки до найденной строчки
Поиск нескольких слов одноверменно
grep 'шаблон1\|шаблон2\|шаблон3' # в разных версиях по разному

Примеры

Обрезаем вывод
grep -iRH "finder_tokens" ./dump.sql | cut -c 1-200
Удаляем комментарии и пустые строки
| grep -v ^" "*# | grep -v ^" "*$ 
| grep -v '^ *#' | grep -v '^ *$'   # В зависимости от версии grep
Оставляем только искомое
$ uptime 
13:57:14 up 15 days,  5:05,  2 users,  load average: 0.01, 0.03, 0.05
$ uptime | grep -o 'load average.*'
load average: 0.01, 0.03, 0.05
Не удаляем результаты, а только подсвечиваем
ls -alh | grep --colour 'root\|'
показывать только файлы, без содержания
grep -iRl "4MzIiOyBpZigkZXZhMWZZMmJhazFjej" ./
ищем в больших строках с обрезанием
grep --color -Eo ".{0,20}SOMETEXT.{0,20}" ./dump.sql
получаем все ссылки на странице
curl http://conovaloff.ru/doku.php | grep -PiH "href=\".*?\""
значения из файла в одну строчку
vim test.txt
:%s#\n#\\\|#

Discussion

Constantin Conovaloff, 2014/09/18 17:57

Искать файлы в которых есть prepay, потом в этих файлах искать файлы в которых есть pdf и т.д.

for findFile in `grep -liRH 'prepay' ./ 2>/dev/null` ; do for secFile in `grep -il 'pdf' $findFile` ; do grep -il 'insert' $secFile ; done ; done
for findFile in `grep -liRH 't::model($className' ./ 2>/dev/null` ; do grep --color -iH 'table_name' $findFile || grep -A4 --color -H 'tableName' $findFile | grep --color 'return'  ; done
Constantin Conovaloff, 2014/11/05 21:00

Grep может зависнуть в чтение если ему повстречался fifo, device или иное подобие файла которое может симулировать бесконечное возвращение данных. Чтобы это предотвратить, можно использовать

grep -D skip 'some' /

Так же, проблемой являются спец.директории со спец файлами наподобие /proc. Чтобы их обойти, можно прибегнуть к find

find / -xdev -type f -exec grep -D skip -H 'some' {} \;
Constantin Conovaloff, 2015/02/24 16:17

включение опций по умолчанию

vim ~/.bashrc

export GREP_OPTIONS="-n --color" # color и номер

Если вы это сделали, то пизда вашей системе, потому что все это ведет к тому, что 1000-чи других программ которые используют grep, начнут творить хуйню в таком стиле:

/usr/bin/grub-mkrelpath: error: failed to get canonical path of `2:/boot'.
dpkg: error processing package grub-pc (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 grub-pc
E: Sub-process /usr/bin/dpkg returned an error code (1)

Неужели “get canonical path of `2:/boot'.” странно… с чего бы это?! Аааа!!!

Constantin Conovaloff, 2015/08/20 21:21

multiline (многострочно)

echo -e 'bad\nstart\nsearch\nend\nbad' | grep -Pzo 'start(.|\n)*?end'
Constantin Conovaloff, 2015/09/10 21:56

проблемы с grep когда stdin идет в цвете

Так как за цвет отвечают определенные символы, то их нужно отфильтровать прежде чем грепать (или понимать, что ты грепаешь)

cat ./logs_with_color | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" |  grep 'error'
You could leave a comment if you were logged in.
grep.txt · Last modified: 2013/12/06 19:53 by conovaloff

Page Tools