Supongamos que hay una columna de valores numéricos como la siguiente:
Archivo1:
1
2
3
3
3
4
4
4
5
6
Quiero la salida:
3
4
Es decir, solo las líneas repetidas. ¿Hay alguna herramienta de línea de comandos para descubrir esto en Linux? (Nota: los valores están ordenados numéricamente).
shell
text-processing
Mente monstruo
fuente
fuente

man uniq.Respuestas:
Puedes usar
uniq(1)para esto:Esto imprimirá solo los duplicados. El archivo de entrada debe ordenarse de modo que todos los duplicados sean consecutivos (lo que parecen ser), así que ejecútelo primero si no es así.
fuente
sort | uniq -c | grep '^\s*3\s' | sed 's/^\s*[0-9]*\s*//'para triplicados; reemplace "3" con cualquier N para N-plicatessort | uniq -c | sed -n 's/^[[:blank:]]*3[[:blank:]]\{1,\}//p'para triplicadosUsando
uniqyawk:fuente
cat?uniq -c File1y de manera similar con muchas otras herramientas. Eso es probablemente lo que está pasando aquí.Ejecute esto:
perl -ne 'print if $a{$_}++' filename.txtfuente
3\n3\n4\n\4npara la entrada File1 que obviamente está mal.uniqrequiere que se ordene su lista, ordene los valores predeterminados alfabéticamentesort | uniq -d path/to/your/filenameo
cat fileName | sort | uniq -d path/to/your/filenamefuente