Se a comparação linha a linha for aceitável, o seguinte informará quais linhas são duplicadas no arquivo text
e quantas vezes cada uma aparece:
sort text | uniq -c | grep -vE '^\s*1 '
Como 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, supondo que o formato do teste de entrada não seja muito complexo, para comparações parágrafo por parágrafo ou frase por sentença.
Como encontrar parágrafos repetidos
Suponha que nosso arquivo text
contenha:
This is a paragraph.
This is another
paragraph
This is
a paragraph.
Last sentence.
O seguinte comando identifica os parágrafos que 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 usa awk
para dividir o texto em parágrafos (delineado 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 o% GNUawk
. Para outros awk
, o método para definir linhas em branco como limites de parágrafo (registro) pode ser diferente.