Eu quero comparar linhas em dois arquivos, mas para minimizar o ruído na saída, quero apenas as diferenças reais nas linhas a serem impressas.
Por exemplo, dados os dois arquivos abaixo:
a.txt
a b c d e f g h i j k l m n o p q r s t u v w x y z
b.txt
a B c d e f g h i j k l m n o p q r s t u v w x y z
(a diferença entre eles é o caso da letra b
)
Eu quero que a saída seja algo como:
[-b-]{+B+}
Atualmente, a melhor abordagem que encontrei foi usar git diff --word-diff
, mas gera a linha inteira:
a [-b-]{+B+} c d e f g h i j k l m n o p q r s t u v w x y z
Existe uma maneira mais direta de fazer isso, além de analisar manualmente a saída? Além disso, idealmente eu preferiria usar algo mais comumente disponível do que git diff
, por exemplo, uma ferramenta de shell POSIX que não exigiria que o usuário instalasse pacotes extras.
Usando wdiff :
A opção
-3
ou---no-common
removerá as palavras comuns entre os dois arquivos e mostrará apenas as diferenças.O
===...
banner (e linhas vazias) podem ser removidos comgrep
:wdiff
também pode lerdiff
dados unificados se você der a opção-d
ou--diff-input
, por exemplo, degit
:Embora
wdiff
não seja uma ferramenta POSIX, é comumente disponível.