Gostaria que o (GNU) DIFF imprimisse apenas as linhas diferentes em um arquivo. Tão dado
==> diffa.txt <==
line1
line2 - in a only
line3
line4 changed
line5
==> diffb.txt <==
line1
line3
line4 changed in b
line5
line6 in b only
eu gostaria diff --someoption diffa.txt diffb.txt
de produzir
line2 - in a only
line4 changed
A seguir, parece que deve ser útil, mas é um pouco enigmático:
--GTYPE-group-format=GFMT
Similar, but format GTYPE input groups with GFMT.
--line-format=LFMT
Similar, but format all input lines with LFMT.
--LTYPE-line-format=LFMT
Similar, but format LTYPE input lines with LFMT.
LTYPE is `old', `new', or `unchanged'.
GTYPE is LTYPE or `changed'.
GFMT may contain:
%< lines from FILE1
%> lines from FILE2
Respostas:
Não tem certeza
diff
sozinho, mas você sempre pode usar o poder de outros utilitários GNU para ajudá-lo.Ele faz o diff e, em seguida, seleciona apenas as linhas que começam com '-' - essas são alteradas e têm valores do arquivo diffa.txt e, em seguida,
sed
apenas remova os sinais '-'.Edit: Após algumas experiências com
diff
, parece que o comando abaixo produz o que você deseja:fonte
--changed-group-format='%<'
está fazendo por mim agora ....O método mais simples é usar o
comm
utilitário linux (ele precisa de um arquivo classificado para entrada). Ele grava na saída padrão:linhas que são exclusivas para diffa.txt
linhas que são exclusivas para diffb.txt
linhas que são comuns
e você pode suprimir cada um deles pelo parâmetro 1,2 ou 3 de acordo. Portanto, no seu caso, será assim:
comm -23 diffa.txt diffb.txt
Suprime linhas exclusivas para diffb.txt, linhas comuns e imprime linhas únicas apenas para diffa.txt
Fonte: https://www.tutorialspoint.com/unix_commands/comm.htm
fonte
diff
que não está fazendo o que eu espero. E eu acredito que ele esteja pré-instalado tanto no BSD (ou seja, no Mac OS X) quanto no Ubuntu, para que não haja pesadelos no gerenciador de pacotes.Eu gostaria de mencionar que
comm
espera arquivos de entrada classificados e, portanto, relata resultados diferentesdiff
.é universal. Muitos elogios para @vava
fonte