SE o conteúdo do arquivo couber na memória awk
é bom para isso. O one-liner padrão em comp.lang.awk (não consigo pesquisar uma instância dessa máquina, mas há vários a cada mês) para detectar que há duplicação é awk 'n[$0]++'
, que conta as ocorrências de cada valor de linha e imprime qualquer ocorrência (s) diferente do primeiro, porque a ação padrão é print $0
.
Para mostrar todas as ocorrências, incluindo a primeira, no seu formato, mas possivelmente em ordem mista, quando mais de um valor é duplicado, fica um pouco mais meticuloso:
awk <sentences.txt ' !($0 in n) {n[$0]=NR;next} \
n[$0] {n[$0]=0; print "Line "n[$0]":"$0} \
{print "Line "NR":"$0} '
Mostrado em várias linhas para maior clareza, você geralmente é executado em conjunto no uso real.
Se você fizer isso com frequência, poderá colocar o script awk
em um arquivo com awk -f
ou, claro, a coisa toda em um script de shell. Como a maioria dos awk
, isso pode ser feito de forma muito semelhante com perl -n[a]
.