uscr 08.05.2012 11:04
Есть вопрос! — Tail -f + egrep в скрипте.
Здравствуйте. Возникла проблема почти такая же, как в соседнем вопросе: "Почему не работает перенаправление в файл?". Нужно в реальном времени разбирать строки из некоторого файла. Конструкция выглядит так:
1 |
|
Есть желание вставить между tail -fn0 $FILE и while read i ещё и греп (egrep в данном случае). Проблема в том, что при внедрении egrep'а дальше по пайпу ничего не проходит, а при завершении скрипта, всё "нагрепаное" вываливается. Как добиться работы в реалтайме?
P.S.
В конечном итоге строка выглядит так:
tail -fn0 $FILE | egrep "$PRIMARY_FILTER" | while read i
P.P.S
Решил так:
tail -fn0 $FILE | awk "/($PRIMARY_FILTER)/ {print; fflush()}" | while read i Работает. Но вопрос оставляю для общего развития.
ananas 08.05.2012 12:28 #
+ 1 -
egrep --line-buffered "$PRIMARY_FILTER"
это поточный редактор специально заточеный для построчной обработки текстовых файлов. правда регэкспы реализованы несколько по-другому. круче или нет зависит от задачи.
Тоже самое в принципе, только фильтр уже в теле программы и можно одной функцией по разным условиям в разные потоки выводить или в массиве сохранить