Задача в чем? Вывод строк, содержащих СЛОВО1 и [СЛОВО2]? Как должны следовать СЛОВО1 и [СЛОВО2]? В одной строке в произвольном порядке оба слова, или хотя бы раз любое из слов в строке, или какая-то другая логика? Напишите точнее. И покажите вывод того, что есть у вас после обработки (часть вывода) чтобы понять, что есть, что нужно и что не получается. И код скрипта приведите.
Не пробовали символ конвейера вставить? cat $LOG | grep [CЛОВО2] те |
Задача в том, чтобы в логе найти строки, где СЛОВО1
и [СЛОВО2] находятся в одной строке. Между ними встречаются другие символы.
Почитал, что советуете, реально срабатывает:
cat $LOG | grep -ER "(СЛОВО1|\[СЛОВО2\])" , ($LOG - это переменная, объявляется в начале скрипта - путь до лога)
Но выводит только строки, содержащие или 2 слова вместе или каждое по отдельности.
Нужен именно первый вариант.
Только почему все советуют использовать | (вертикальную черту???) - это ведь логическое
или, а мне нужно
ИЕсли делаю так:
cat $LOG | grep -ER "(СЛОВО1| && [СЛОВО2\]) - ничего не срабатывает
Пользователь решил продолжить мысль [time]13 Октябрь 2014, 14:29:20[/time]:
DDDstart,
Это?
cat $LOG | grep -i "(СЛОВО1|СЛОВО2)"
не работает
Пользователь решил продолжить мысль [time]13 Октябрь 2014, 14:30:13[/time]:
DDDstart,
Это?
cat $LOG | grep -i "(СЛОВО1|СЛОВО2)"
слово [СЛОВО2] должно быть в [] Напишите точно, что конкретно вам нужно.
Да, СЛОВО2 в логе именно в квадратных кавычках и именно так его нужно отловить
Пользователь решил продолжить мысль [time]13 Октябрь 2014, 14:31:49[/time]:
DDDstart,
подбором сработало так 
grep \\[СЛОВО2\\]
Да, на твоем примере и сделал, но только так:
cat $LOG | grep -ER "(СЛОВО1|\[СЛОВО2\])
только логика должна быть
И
Пользователь решил продолжить мысль [time]13 Октябрь 2014, 14:33:01[/time]:
cat $LOG | grep -i "(СЛОВО1|\[СЛОВО2\])"
не фурычит так
Пользователь решил продолжить мысль 13 Октября 2014, 14:37:52:
Я жду конкретизации исходной задачи - до сих пор не понятно, что нужно просящему помощи
нет смысла обсуждать синтаксис, когда не ясна исходная задача. Мы даже не знаем, чего хотим на выходе получить ))) "обработать лог на наличие..." - тоже, что искать жизнь на Марсе, находясь на Земле. Так что надо подождать. Может и не надо ничего экранировать )) и вообще применять РВ. Кстати, RingOV - вы тоже в первом варианте пропустили целую литеру и ничего 
Да какая разница, зачем.
Ну если ООООЧЕНЬ нужно, то вот за этим:
#!/bin/bash
LOG=/var/log/бабки.log
if [ -s $LOG ] ; then
cat $LOG | grep -ER "(капуста|\[зелень\])" > /dev/null
then
открыть счет в швейцарском банке
else
не открыть
echo -n > $LOG
fi