mkfifo
Você pode ter seu primeiro programa escrito em um fifo (named pipe) em vez de um arquivo regular, então você pode processar a saída como quiser, como em um pipe normal:
mkfifo out
prgram1 -O out | filter_program < out > file
rm out
Por exemplo, com wget como prgram1, você poderia fazer:
wget -qO out 'superuser.com' | grep '<title>' out
O |
serve apenas para executar os dois comandos simultaneamente, o canal em si não é usado.
O programa deve estar gravando o arquivo sequencialmente para que isso funcione. Se precisar mover o arquivo que não serve.
Editar: Isso não funciona se o programa excluir o arquivo de saída antes de gravar.
Precisamos de mais alguns truques então. Que tal deixar o programa escrever, mas não apagar o arquivo :
$ prg1() { rm out; wget -qO out 'superuser.com'; }
$ mkfifo out
$ chmod 500 .
$ prg1 | grep '<title>' out
Isso deve funcionar desde que o programa não seja muito exigente e não contenha erros de exclusão.