2016-10-09 2 views
0

Я пытаюсь создать сценарий мониторинга и связаться с указанным человеком в случае специального события, первый egrep в нижнем коде работал нормально, но второй не работал вообще, пожалуйста, помогите:grep не работает во время цикла

while true; do 
    tail -f /Testing/script/errors | egrep -o --line-buffer "Timeout" >> wch.txt; 
    cat /Testing/script/contacts.txt|egrep --line-buffer "FB" | cut -f2 -d ":" >> mail.txt; 
    sleep 5 
done 

contact.txt:

FB: [email protected] Google: [email protected]

ответ

0

Там нет такой опции, как --line-buffer, возможно, вы имели в виду --line-buffered , это GNU-изм.

Второй grep может быть упрощен:

grep --line-buffered 'FB' /Testing/script/contacts.txt | cut -f2 -d ":" >> mail.txt 

Вы не используете Extended Regex шаблона, так что нет никакого смысла, используя egrep (grep -E). Также вам не нужен cat, а piping, grep принимает имя файла в качестве аргумента.

Аналогично первому grep можно записать в виде:

tail -f /Testing/script/errors | grep -o --line-buffered "Timeout" >> wch.txt 

Так что ваш while конструкции:

while :; do 
    tail -f /Testing/script/errors | egrep -o --line-buffer "Timeout" >> wch.txt 
    grep --line-buffered 'FB' /Testing/script/contacts.txt | cut -f2 -d ":" >> mail.txt 
    sleep 5 
done 
+0

Я сделал, как вы сказали мне, как показано ниже, и это не сработало: –

+0

в то время как истинная сделать хвостовых -f/тестирование/скрипт/ошибки | egrep -o -line-buffer «Тайм-аут» >> wch.txt; grep - line-buffered 'FB' /Testing/script/contacts.txt | cut -f2 -d ":" >> mail.txt sleep 5 сделано –

+0

первый grep работал отлично, но второй еще не работает, может быть, это не grep или что? –

0

-f флаг во 2-й линии блокирует петлю. В результате файл добавляет новые строки в /Testing/script/errors.

+0

даже после того, как я удалил его, он не работал –