Eu tenho que inspecionar um log crescente em tempo real, e eu encontrei um problema que me faz perder algumas linhas (não consigo entender exatamente quais linhas) usando tail -f ou tailf , grep e cut .
Eu uso grep porque quero filtrar linhas contendo uma palavra específica e, em seguida, cut -c -NUM porque algumas linhas são muito longas e não quero que elas sejam incluídas na minha janela de terminal.
Aqui está um exemplo mínimo, no qual estou assistindo a um registro de amostra feito de linhas "Nth line" , filtrando a palavra "line" , faltando todas as linhas neste caso (obviamente ^C é eu matando o processo):
$ tail -n 3 -f log
13th line
14th line
15th line
^C
$ tail -n 3 -f log | grep --color=never 'line'
13th line
14th line
15th line
^C
$ echo $COLUMNS
100
$ tail -n 3 -f log | grep --color=never 'line' | cut -c -$COLUMNS
^C
Tenha em atenção que este problema ocorre apenas com tail -f (ou tailf ), grep e cut combinado . Se eu não usar grep no meio ou cut no final do canal, não haverá linha faltando. Se eu substituir tail -f por tail ou cat , não há problema. Você pode ver todos os casos possíveis em este exemplo mais longo .
Estou no Ubuntu 13.04, GNU coreutils ( tail , cut ) versão 8.20 e GNU grep 2.14.