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
uniq
yawk
:fuente
cat
?uniq -c File1
y de manera similar con muchas otras herramientas. Eso es probablemente lo que está pasando aquí.Ejecute esto:
perl -ne 'print if $a{$_}++' filename.txt
fuente
3\n3\n4\n\4n
para la entrada File1 que obviamente está mal.uniq
requiere que se ordene su lista, ordene los valores predeterminados alfabéticamentesort | uniq -d path/to/your/filename
o
cat fileName | sort | uniq -d path/to/your/filename
fuente