Faça uma cauda -F até corresponder a um padrão
Eu quero fazer uma cauda -F em um arquivo até corresponder a um padrão. Eu encontrei uma maneira de usar o awk, mas IMHO meu comando não é realmente limpo. O problema é que eunecessidade fazê-lo em apenas uma linha, devido a algumas limitações.
tail -n +0 -F /tmp/foo | \
awk -W interactive '{if ($1 == "EOF") exit; print} END {system("echo EOF >> /tmp/foo")}'
A cauda será bloqueada até que EOF apareça no arquivo. Funciona muito bem. O bloco END é obrigatório porque a "saída" do awk não sai imediatamente. Faz awk avaliar o bloco END antes de sair. O bloco END trava em uma chamada de leitura (por causa da cauda), portanto, a última coisa que preciso fazer é escrever outra linha no arquivo para forçar a saída da cauda.
Alguém sabe uma maneira melhor de fazer isso?