Выполните хвост -F до совпадения с шаблоном

Я хочу применить к файлу tail -F до совпадения с шаблоном. Я нашел способ использовать awk, но ИМХО моя команда не совсем чистая. Проблема в том, что мне нужно сделать это только в одной строке из-за некоторых ограничений.

tail -n +0 -F /tmp/foo | \
awk -W interactive '{if ($1 == "EOF") exit; print} END {system("echo EOF >> /tmp/foo")}'

Хвост будет блокироваться, пока EOF не появится в файле. Работает очень хорошо. Блок END является обязательным, так как "exit" awk не завершается сразу. Это заставляет awk вычислять блок END перед выходом. Блок END зависает при вызове чтения (из-за хвоста), поэтому последнее, что мне нужно сделать, - это написать еще одну строку в файле, чтобы принудительно завершить выход.

Кто-нибудь знает, как это сделать лучше?

22
задан Sam Alba 18 February 2011 в 01:05
поделиться