Возможно, вам захочется попробовать Moonlight 3 Preview (это было необходимо для просмотра некоторых видеороликов, например, для работы в Eurosport)
tail -f /path/to/log | awk '/X/ && !/Y/'
# ^^^ ^^^^
# this I want but not this
Испытано с двумя вкладками, в котором я продолжаю писать seq 20 >> myfile, а другой, имеющий, например, tail -f myfile | awk '/3/ && !/13/'.
Другим подходом было бы использование одного вызова grep вместо двух и, таким образом, избежать проблемы с буферизацией. Просто используйте регулярные выражения, которые соответствуют строкам, состоящим из 0 или более символов, отличных от Y, затем X, а затем 0 или более не-Ys снова до конца строки «
tail -f /path/to/log | grep '^[^Y]*X[^Y]*$'