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