Você pode usar dois arquivos:
if [ -e checkfile ]; then
lines=$(wc -l <checkfile)
else
lines=0
fi
# read all new lines from source file and append them to target file
sed -n $((lines+1)),\$p file >>checkfile
awk '...' checkfile
por exemplo, se tivermos um arquivo, contenha:
Hello world
Hello earth
Hi everybody
podemos analisá-lo facilmente para que as primeiras e segundas colunas das linhas contenham a palavra Hello
usando awk
:
awk '/Hello/ { print $1 }' file
awk '/Hello/ { print $2 }' file
E se o conteúdo do arquivo for alterado:
Hello world
Hello earth
Hi everybody
Hello sky
Hi madame
Hello USA
Como podemos analisar apenas as novas entradas adicionadas a este arquivo (usando awk
):
Hello sky
Hi madame
Hello USA
sem analisar novamente as informações já analisadas?
Hello world
Hello earth
Hi everybody
Você pode enviar o conteúdo do arquivo via tail -f
(ou tail -F
), por exemplo,
tail -f file | awk '...'
Na página tail
man:
-f, --follow[={name|descriptor}]
output appended data as the file grows; -f, --follow, and --fol‐
low=descriptor are equivalent
Tags text-processing awk shell