Estou tentando canalizar um fluxo ativo para outro comando (talvez um script bash), mas ele sempre quer esperar que todo o fluxo seja concluído antes de processar o comando. s.g. Eu posso fazer isso:
tail file.log | grep keyword | xargs -L 1 echo ...
e exibe corretamente as linhas correspondentes de file.log, precedidas por "...". Obviamente, eu não quero apenas ecoar, isso é apenas para simplificar o exemplo (eu substituiria isso por um script bash personalizado). Agora, quando eu tento isso:
tail -f file.log | grep keyword
isso funciona, na qual saem as linhas correspondentes e, em seguida, faz uma pausa até que file.log seja alterado e, em seguida, gera quaisquer novas linhas correspondentes. No entanto, se eu tentar isso:
tail -f file.log | grep keyword | xargs -L 1 echo ...
Não produz nada - presumo que esteja esperando o fluxo aberto pela cauda -f terminar. Eu tentei isso também:
tail -f file.log | grep keyword | while read line; do echo...$line; end
sem alteração no comportamento. Eu li sobre outras questões aqui que isso deve funcionar. Estou executando o Ubuntu 14.04, existe alguma diferença por causa disso? Como posso fazer isso funcionar?