Те, що я намагаюся зробити, це фільтрувати вихід одного файлу журналу в окремі файли журналів на основі фільтра grep.
хвіст -f test.log | & gt; (grep "Помилка" & gt; error.log) & gt; (grep "Попередження" "& gt; warning.log)
Таким чином, всі записи "Error" знаходяться в одному файлі, а всі записи "Warning" знаходяться в окремому файлі.
Я знаю, що це працює в концепції, тому що якщо я використовую кіт замість хвіст , Я отримую правильний вивід файлу, але не можу відстежувати зміни в реальному часі (що мені потрібно, тому що я дивлюся вихідні журнали з активних тестів)
Також, якщо видалити "& gt;" файли ре-директорів з grep команди виводить індивідуальні виходи grep на консоль правильно; однак, я також хочу записати файл.
Відповідь:
При записі в файл виводиться grep буферизувався. Використання egrep з --line-buffer Варіант виправлено поведінку.
Нова команда виглядає так:
хвіст -f test.log | & gt; (egrep - лінійний буфер "ERROR" & gt; error.log) & gt; (egrep - лінійний буфер "WARNING" & gt; warning.log)