Задать вопрос
begemot_sun
@begemot_sun
Программист в душе.

Как грепнуть одновременно по нескольким условиям?

Вот есть лог файл.
Нужно grep-нуть его по нескольким условиям.
Типа встречается строка №1 или (строка №2 и строка №3).
В в случае когда просто строка #1: grep #1
Когда #2 и #3: grep #2 | grep #3
А как попроще организовать "или", т.е. объединить результаты этих 2х выражений ?
Ну вот так чтобы поменьше печатать и без регулярок.

вот было бы идеально: #1|(#2 & #3).
Я привел это как пример, на самом деле условия будут достаточно вложенными.

Спасибо.
  • Вопрос задан
  • 35231 просмотр
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 3
miraage
@miraage
Старый прогер
Без регулярок невозможно объединить. И вообще, у Вас есть man grep.
Сначала его читайте, а потом вопросы задавайте.
cat access.log | grep -P 'foo|bar|baz'
Ответ написан
shambler81
@shambler81 Куратор тега Linux
cat access.log | grep -P 'foo|bar' | grep -P baz
а В чем проблемма то?
или или и
ну и в купе с этим | grep -v 'исключить'
Ответ написан
@kanzl
Когда надо грепнуть по принципу верни строки где есть "матч1 и матч2", то мы юзаем grep -E '(match1.*match2)'
когда нужно условие ИЛИ то grep -E '(match1|match2)'
помните что пробелы имеют значение :
grep -E '(match1|match2)'и
grep -E '(match1 | match2)' - это разные запросы и результаты
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы