У меня была такая же проблема.
Я нашел некоторые частичные «решения», которые не являются полностью переносимыми.
Некоторые из них указывают на использование функций fklush () или flush () awk или -W интерактивной опции
http://mywiki.wooledge.org/BashFAQ/009
Я пробовал оба, и ни один не работает. Так что awk совсем не подходящая команда.
Некоторые из них предлагают использовать gawk, но мне это тоже не подходит.
команда cut имеет ту же проблему.
Мое решение: в моем случае мне просто нужно было поставить --line-buffered в GREP и не трогать команду awk, но в вашем случае я бы попробовал:
sed -u
с правильным регулярным выражением. Например:
sed -u 's_\(.*\) \(.*\) \(.*\) DIFF: \(.*\)_\3 \4_'
Это выражение дает вам 3-й и 4-й столбцы, разделенные TAB (записанные с помощью комбинации Ctrl + V и TAB). С опцией -u вы получите небуферизованный вывод, а также у вас есть опция -l, которая выдаст вам буферизованный вывод.
Надеюсь, вы найдете этот ответ полезным, хотя уже поздно