Se a comparação linha por linha for aceitável, o seguinte dirá quais linhas são duplicadas no arquivo text
e quantas vezes cada uma aparece:
sort text | uniq -c | grep -vE '^\s*1 '
Como um exemplo,
$ cat text
alpha
beta
alpha
gamma
alpha
beta
$ sort text | uniq -c | grep -vE '^\s*1 '
3 alpha
2 beta
Usando as ferramentas usuais do unix, isso pode ser estendido, assumindo que o formato do teste de entrada não seja muito complexo, para comparações parágrafo por parágrafo ou sentença por sentença.
Localizando parágrafos repetidos
Suponha que nosso arquivo text
contenha:
This is a paragraph.
This is another
paragraph
This is
a paragraph.
Last sentence.
O comando a seguir identifica mostra quais parágrafos aparecem mais de uma vez:
$ awk -v RS="" '{gsub(/\n/," "); print}' text | sort | uniq -c | grep -vE '^\s*1 '
2 This is a paragraph.
Isso é usado awk
para dividir o texto em parágrafos (delineados por linhas em branco), converte as novas linhas em espaços e passa a saída, uma linha por parágrafo, para classificar e uniq para contar parágrafos duplicados.
O acima foi testado com GNU awk
. Para outros awk
, o método para definir linhas em branco como limites de parágrafo (registro) pode ser diferente.
vimdiff
faz por você aqui?