Я хочу сделать хвост -F в файле до соответствия шаблону. Я нашел способ использовать awk, но IMHO моя команда не очень чистая. Проблема в том, что мне нужно делать это только в одной строке из-за некоторых ограничений.
tail -n +0 -F /tmp/foo | \
awk -W interactive '{if ($1 == "EOF") exit; print} END {system("echo EOF >> /tmp/foo")}'
Хвост блокируется до тех пор, пока в файле не появится EOF. Это работает очень хорошо. Блок END является обязательным, так как awk "exit" не выходит сразу. Это делает awk для проверки блока END перед выходом из игры. Блок END зависает при вызове чтения (из-за хвоста), поэтому последнее, что мне нужно сделать, это написать еще одну строку в файле, чтобы заставить хвост выйти.
Знает ли кто-нибудь лучший способ сделать это?