Я пытаюсь создать скрипт, который будет смотреть несколько журналов. У меня есть журнал запросов с каждым запросом отформатирован что-то вроде этого,Буферные записи в GNU awk
---
id=273482
Result=Error
---
id=342345
Result=Success
---
И второй журнал, где каждая строка имеет идентификатор запроса. Мне нужно следить за журналом запроса и перекрестно ссылаться на него со вторым журналом.
tail -f requestLog | awk \"BEGIN { RS = \"---\" } /Error/\" | grep --line-buffered id | sed -u ...
I хвост -f в requestLog, использование AWK для разделения записей на "---", а затем Grep из строки идентификаторов. Затем я передаю все это sed -u, чтобы извлечь id и xargs, чтобы пойти grep второй журнал для строк, связанных с плохими запросами.
Проблема заключается в том, что результаты очень сильно задерживаются, потому что что-то (я думаю, awk) ошибочно буферизуется. Как я могу заставить awk читать входные данные без остановки и вымывать вывод каждый раз, когда он видит плохую запись? Кстати, я использую GNU awk.