Obtenha o último conteúdo alterado desde a última leitura

1

Como posso obter o último conteúdo alterado de um arquivo desde sua última leitura?

Algo mais preciso que isso:

tail - <nr >file_1.txt >file_2.txt

em que file_2.txt obtém o último conteúdo modificado.

    
por bulkmoustache 26.10.2013 / 19:17

1 resposta

0

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
    
por 26.10.2013 / 20:16

Tags