diff saída unificada; supress @@ linhas?

1

Ao usar o diff, existe uma maneira de suprimir as duas primeiras linhas (listando os nomes e horários dos arquivos) e todas as linhas iniciadas com @@ na saída? Tudo que eu quero são as linhas que mostram o que apagar e o que adicionar.

Aqui está o comando que tenho atualmente:

diff file1 file2 -U 0 > output.txt

Exemplo de saída do que recebo no arquivo output.txt com esse comando:

--- file1   2010-11-25 01:56:58.856462432 -0500
+++ file2   2010-11-25 01:57:20.100626348 -0500
@@ -145,2 +145 @@
-VI2
-US3
+VI4
@@ -168,2 +167,2 @@
-56VI
-56PR
+57VI
+57PR

[editar]: quem quer que tenha adicionado o comando comm, ele acabou sendo correto. Eu te darei a resposta se você postar de volta.

    
por Force Flow 25.11.2010 / 08:07

2 respostas

0

Isso acabou sendo a solução que eu escolhi:

comm -1 -3 --nocheck-order 'path/file.csv' 'path/file2.csv' > 'path/added.txt'
comm -2 -3 --nocheck-order 'path/file.csv' 'path/file2.csv' > 'path/removed.txt'
    
por 06.12.2010 / 09:37
2
diff file1 file2 -U 0 | tail +3 | grep -v "^@@" > output.txt

Esta versão tem o mesmo comando diff que você tem, mas retira as duas primeiras linhas com tail (começando da terceira linha) e produz apenas linhas não tendo "@@" no começando.

    
por 25.11.2010 / 14:12