Diff, mostra a linha modificada apenas do arquivo correto


24

Eu tenho arquivo ae gostaria de gerar blinhas de balteração disso desde que foi clonado a. Apenas as linhas modificadas, sem contexto circundante, sem marcas de deslocamento de diferença.

Como posso fazer isso usando scripts de shell? (Sem Python / Perl / PHP / ...)

Sed e awk são soluções aceitáveis.

Por enquanto, o que estou fazendo é diferente de --suppress-common-lines e sed usando as referências anteriores do regex para buscar apenas a parte correta após o espaço em branco. Deve haver uma maneira melhor?

Usando perl (o que é proibido), eu faria algo assim:

diff -y --suppress-common-lines -W $COLUMNS Eclipse_Preferences_Export_*.epf | perl -pe 's/.*\t|\t(.*)$/\1/g'

Respostas:


34

Com os pacotes GNU diffutils , diffisso produzirá apenas linhas do arquivo b que foram modificadas ou recém-inseridas:

diff --unchanged-line-format= --old-line-format= --new-line-format='%L' a b

4
Impressionante. Shame a informação é enterrado no Texinfo e nenhuma dica é fornecido na página de homem que eu estava lendo ..
Robottinosino

6

Você precisa adicionar mais uma opção:

grep -vf file1 file2

Embora isso não exija que as linhas sejam classificadas, acho que o grep usa muito mais memória e trava para arquivos grandes.
Sridhar Sarnobat

não funciona se as linhas são duplicadas quer
Jayen

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.