Mostra apenas o que há de novo em um arquivo

4

Eu quero descobrir o que foi adicionado a um arquivo de log entre duas tarefas. Agora o jeito que eu faço é:

conteúdo do test.log inicialmente

aaa
bbb

salvando o conteúdo do log

$ cp test.log test.log.before

fazendo algo

conteúdo do test.log depois de fazer algo

aaa
bbb
ccc

salvando o conteúdo do log

$ cp test.log test.log.after

mostrando a diferença

$ diff test.log.before test.log.after
2a3
> ccc

O que eu não gosto com este método é que eu recebo algum ruído de diff ( 2a3 e > ) enquanto eu quero apenas ccc .

P: Existe uma maneira de eu conseguir a diferença entre os dois arquivos de log (ou seja, o que há de novo em test.log.after, ccc )?

Eu dei uma olhada na página man do diff mas não vejo nada óbvio lá .

    
por Max 29.11.2011 / 12:59

2 respostas

3

Se você deseja obter somente as adições, pode filtrar a saída como:

$ diff test.log.before test.log.after | grep "^>" | cut -c 3-

No entanto, você perderá as exclusões, se houver.

    
por 29.11.2011 / 13:14
4

Se você sempre faz um antes e depois de tal que o final do arquivo após irá conter o novo conteúdo, então você poderia usar comm .

$ cat before 
aaa
bbb

$ cat after
aaa
bbb
ccc

$ comm -3  after before
ccc
    
por 29.11.2011 / 13:09

Tags