Ответ 1
Проблема заключается в том, что grep
видит, что он не записывается на терминал, поэтому он буферизует свой вывод, в конце концов записывая большие куски, которые sed
может обрабатывать все сразу. Чтобы сообщить, распечатывать ли строки, как только они доступны, используйте параметр --line-buffered
:
tail -f mylogs.log \
| grep --line-buffered Exception \
| sed -u -e $'s/Exception/Exception\a/'
(Обратите внимание, что я также добавил флаг -u
в sed
, который похож на параметр grep
--line-buffered
. В моем тестировании это, похоже, не повлияло на эту команду, но Я полагаю, что лучше включить его на всякий случай.)