bash сравнение строки с несколькими условиями

Автор zCirill, 29 октября 2015, 22:26:29

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

zCirill

Добрый день.

Подскажите плз, как можно упросить конструкцию c регулярками.
Нужно распарсить логи на предмет совпадения.

[[ $n =~ "answered SIP/telphin" ]] || [[ $n =~ "answered SIP/mtt-" ]] || [[ $n =~ "answered SIP/westcall" ]] && [[ $n =~ "app_queue.c" ]]

условие такого рода если в строке есть answered SIP/telphin или answered SIP/mtt- или answered SIP/westcall и app_queue.c, тогда BOOM!

Можно ли как то сократить писанину с [[ ]] ?


ZEN

Если я правильно понял какой именно лог будет парситься и каков его формат, то попробуй вот так:

zen@intel:~$ n="[May 10 21:34:01] VERBOSE[1784] app_queue.c: -- SIP/2-00000007 answered SIP/telphin"
zen@intel:~$ [[ $n =~ ^.*(app_queue\.c.*answered SIP/(telphin|westcall|mtt-)).*$ ]] && echo "OK"
OK
Crimea is Ukraine

zCirill