Мне нужно что-то вырезать из потока, но кажется, что вырезать не удается обработать последнюю строку до появления EOL или EOF.
Моя команда bash:
tail -n 5 -F /data/apache/log/error/error-log | cut -d ' ' -f1-5
файл журнала содержит, например:
[Wed Jan 14 09:00:00 2015] [error] Error 1
[Wed Jan 14 09:10:00 2015] [error] Error 2
[Wed Jan 14 09:20:00 2015] [error] Error 3
[Wed Jan 14 09:30:00 2015] [error] Error 4
[Wed Jan 14 09:40:00 2015] [error] Error 5
но мой результат:
[Wed Jan 14 09:00:00 2015]
[Wed Jan 14 09:10:00 2015]
[Wed Jan 14 09:20:00 2015]
[Wed Jan 14 09:30:00 2015]
Есть ли способ сделать процесс вырезания (и вывод) последней незавершенной строкой, если все необходимые столбцы (первые пять) уже переданы в потоковом режиме?
Мой желаемый результат должен содержать последнюю строку из потока:
[Wed Jan 14 09:00:00 2015]
[Wed Jan 14 09:10:00 2015]
[Wed Jan 14 09:20:00 2015]
[Wed Jan 14 09:30:00 2015]
[Wed Jan 14 09:40:00 2015]
// редактировать Ответы «remove -F» бесполезны, потому что они нужны мне для прямой трансляции. Всякий раз, когда apache добавляет новую запись в журнал, мне нужно немедленно обработать ее с помощью cut. Без взаимодействия с пользователем, без повторного запуска скрипта и т. Д. Просто обрабатывайте поток в реальном времени таким образом, чтобы этот «разрез» не ждал EOL, прежде чем он обработает (и выведет) строку. Если это невозможно, хорошо, я пытаюсь найти обходной путь, но, пожалуйста, не говорите мне не использовать прямую трансляцию, когда мне нужна прямая трансляция!
-F
игнорирует EOF. - person Jasen   schedule 14.01.2015