Com o pacote% GNU diffutils diff
, o resultado será apenas as linhas do arquivo b que foram modificadas ou inseridas recentemente:
diff --unchanged-line-format= --old-line-format= --new-line-format='%L' a b
Eu tenho o arquivo a
e b
e gostaria de exibir linhas de b
que foram alteradas desde que foram clonadas de a
. Apenas as linhas modificadas, sem contexto circundante, sem marcas de deslocamento de diferencial.
Como posso fazer isso usando scripts de shell? (Não Python / Perl / PHP /...)
Sed e awk são soluções aceitáveis.
Por enquanto, o que eu estou fazendo é diff -y com --suppress-common-lines e sed usando backreferences regex para apenas buscar a parte correta após o espaço em branco. Deve haver uma maneira melhor?
Usando perl (que é proibido), eu faria algo assim:
diff -y --suppress-common-lines -W $COLUMNS Eclipse_Preferences_Export_*.epf | perl -pe 's/.*\t|\t(.*)$//g'
Você precisa adicionar mais uma opção:
grep -vf file1 file2
awk 'FNR==NR{old[$0];next};!($0 in old)' old.txt new.txt
Tags diff awk sed shell-script