SI el contenido del archivo cabe en la memoria awk
es bueno para esto. El one-liner estándar en comp.lang.awk (no puedo buscar una instancia de esta máquina pero hay varias cada mes) para detectar que hay una duplicación awk 'n[$0]++'
que cuenta las ocurrencias de cada valor de línea e imprime cualquier ocurrencia (s) que no sea el primero, porque la acción predeterminada es print $0
.
Para mostrar todas las ocurrencias, incluida la primera, en su formato, pero posiblemente en un orden mixto cuando se duplica más de un valor, se vuelve un poco más complicado:
awk <sentences.txt ' !($0 in n) {n[$0]=NR;next} \
n[$0] {n[$0]=0; print "Line "n[$0]":"$0} \
{print "Line "NR":"$0} '
Se muestra en varias líneas para mayor claridad, generalmente se ejecutan juntos en uso real. Si hace esto con frecuencia, puede colocar el awk
script en un archivo awk -f
o, por supuesto, todo en un script de shell. Como la mayoría simple, awk
esto se puede hacer de manera muy similar con perl -n[a]
.