Большинство используют grep как grep -i слово файл и останавливаются. POSIX-регулярки сильно уступают perl-совместимым, а вывод без контекста заставляет открывать файл заново.

  • grep -P '(?<=user=)\w+' auth.log — perl-совместимые регулярки (lookahead/lookbehind), недоступные в обычном grep
  • grep -A 3 -B 1 "ERROR" — 3 строки после и 1 до совпадения, без повторного открытия файла
  • grep -C 2 "timeout" — то же самое, но одинаковое число строк с обеих сторон
  • grep -o -P '\d+\.\d+\.\d+\.\d+' — вывести только совпавшую часть строки, например IP-адреса
  • rg "pattern" -t log — ripgrep: та же задача в разы быстрее на больших деревьях, уважает .gitignore из коробки

#linux #bash