A única maneira que posso pensar em fazer algo assim seria manter uma cópia do arquivo em um nome temporário quando você leu pela última vez e, em seguida, quando você relê-lo novamente, você precisará usar uma ferramenta como como diff
para comparar a cópia previamente lida do arquivo com a versão atual do arquivo.
Exemplo
Algum arquivo de amostra.
$ seq 10 > somefile.txt
$ ls -l |grep somefile.txt
-rw-rw-r-- 1 saml saml 21 Oct 26 13:29 somefile.txt
Agora vamos ler.
$ cat somefile.txt | tee somefile_READ1.txt
1
2
3
4
5
6
7
8
9
10
Aqui o comando tee
nos mostrará o arquivo e criará uma cópia de "backup" que nos mostrará as linhas que lemos na próxima vez. Agora ficamos com esses arquivos:
$ ls -l |grep somefile
-rw-rw-r-- 1 saml saml 21 Oct 26 13:30 somefile_READ1.txt
-rw-rw-r-- 1 saml saml 21 Oct 26 13:29 somefile.txt
Agora, algumas linhas adicionais são adicionadas:
$ seq 11 20 >> somefile.txt
Podemos ver pela data que foi escrita desde a última vez que lemos comparando as datas dos dois arquivos:
$ ls -l |grep somefile
-rw-rw-r-- 1 saml saml 21 Oct 26 13:30 somefile_READ1.txt
-rw-rw-r-- 1 saml saml 51 Oct 26 13:32 somefile.txt
Agora compare os 2 arquivos:
$ diff -y somefile.txt somefile_READ1.txt | column -t
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 <
12 <
13 <
14 <
15 <
16 <
17 <
18 <
19 <
20 <
Acima podemos ver os 2 arquivos lado a lado. O conteúdo do arquivo atualizado está à esquerda, o conteúdo original está à direita.
Se você quiser apenas ver as diferenças, use esta forma de diff
:
$ diff somefile.txt somefile_READ1.txt
11,20d10
< 11
< 12
< 13
< 14
< 15
< 16
< 17
< 18
< 19
< 20