Comandos LinuxExplicados en español
/
Ficha40 / 104
Categoría
Texto
Ejemplos
6
Ver también
sort · cut · wc · grep

uniq

unique (único)

Quita o cuenta líneas repetidas que están una seguida de otra.

Compara cada línea con la anterior y, si son iguales, deja solo una. Como solo detecta repeticiones juntas, casi siempre lo usas después de sort. Sirve para limpiar listas o para saber cuántas veces aparece cada cosa en un log.

Sintaxisuniq [opciones] [ENTRADA [SALIDA]]
§ 1

Despiece

6 ejemplos
Quitar repeticiones seguidas

Quitar repeticiones seguidas

2 piezas
Lámina01 / 06
Comandouniq lista.txt
Piezas2
Escala1:1
N.ºPiezaTipoQué hace
1uniqComandoQuita las líneas iguales que van una tras otra.
2lista.txtArgumentoEl archivo que lee. No se modifica.
Resultado

Si manzana aparece tres veces seguidas, queda una. Si aparece en la línea 1 y en la 8, se quedan las dos.

Quitar todos los duplicados de una lista

4 piezas
Lámina02 / 06
Comandosort frutas.txt | uniq
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1sortComandoOrdena las líneas para que las iguales queden juntas.
2frutas.txtArgumentoEl archivo con la lista.
3|OperadorPipe: manda la salida de sort a uniq.
4uniqComandoQuita las repetidas, que ahora ya están juntas.
Resultado

Cada fruta sale una sola vez, en orden alfabético. Es lo mismo que sort -u frutas.txt.

Contar cuántas veces aparece cada línea

5 piezas
Lámina03 / 06
Comandosort frutas.txt | uniq -c
Piezas5
Escala1:1
N.ºPiezaTipoQué hace
1sortComandoOrdena las líneas para juntar las iguales.
2frutas.txtArgumentoEl archivo con la lista.
3|OperadorPipe: manda la salida de sort a uniq.
4uniqComandoJunta las repetidas.
5-cOpciónAntepone el número de repeticiones.
Resultado

Algo como: 3 manzana, 1 pera, 2 uva. Cada línea con su conteo a la izquierda.

Ver solo lo que está repetido

5 piezas
Lámina04 / 06
Comandosort correos.txt | uniq -d
Piezas5
Escala1:1
N.ºPiezaTipoQué hace
1sortComandoOrdena las líneas para juntar las iguales.
2correos.txtArgumentoUna lista de correos, uno por línea.
3|OperadorPipe: manda la salida de sort a uniq.
4uniqComandoCompara las líneas seguidas.
5-dOpciónSolo muestra las que aparecen dos o más veces.
Resultado

Lista los correos duplicados, una vez cada uno. Útil para encontrar registros repetidos.

Contar sin importar mayúsculas

6 piezas
Lámina05 / 06
Comandosort -f nombres.txt | uniq -ic
Piezas6
Escala1:1
N.ºPiezaTipoQué hace
1sortComandoOrdena las líneas.
2-fOpciónOrdena sin distinguir mayúsculas, para que Ana y ana queden juntas.
3nombres.txtArgumentoEl archivo con la lista.
4|OperadorPipe: manda la salida de sort a uniq.
5uniqComandoJunta las repetidas.
6-icOpción-i ignora mayúsculas al comparar y -c cuenta las repeticiones.
Resultado

Ana, ANA y ana cuentan como el mismo nombre.

Ver las IP que más visitan tu sitio

14 piezas
Lámina06 / 06
Comandocut -d ' ' -f 1 access.log | sort | uniq -c | sort -rn
Piezas14
Escala1:1
N.ºPiezaTipoQué hace
1cutComandoRecorta columnas de cada línea.
2-dOpciónIndica el separador de columnas.
3' 'ValorEl separador es un espacio.
4-fOpciónIndica qué columna tomar.
51ValorLa primera columna, que en los logs de nginx y Apache es la IP.
6access.logArgumentoEl log de accesos del servidor web.
7|OperadorPipe: manda las IP a sort.
8sortComandoOrdena las IP para juntar las iguales.
9|OperadorPipe: manda la lista ordenada a uniq.
10uniqComandoJunta las IP repetidas.
11-cOpciónCuenta cuántas veces aparece cada IP.
12|OperadorPipe: manda los conteos a otro sort.
13sortComandoOrdena los resultados.
14-rnOpciónDe mayor a menor (-r) y como números (-n).
Resultado

Arriba aparecen las IP con más peticiones y su número. Es una de las combinaciones más usadas para revisar logs.

§ 2

Opciones

Las que sí vas a usar
OpciónQué hace
-c--countPone al inicio de cada línea cuántas veces se repetía.
-d--repeatedMuestra solo las líneas que estaban repetidas, una vez cada una.
-u--uniqueMuestra solo las líneas que no se repiten.
-i--ignore-caseTrata mayúsculas y minúsculas como iguales al comparar.
-f--skip-fieldsIgnora los primeros N campos (separados por espacios) al comparar.
-w--check-charsCompara solo los primeros N caracteres de cada línea.
§ 3

Fallas comunes

FallaRemedio
Usar uniq sin sort y que sigan saliendo duplicados.uniq solo compara cada línea con la anterior. Si las repetidas no están juntas, no las detecta. Ordena primero: sort archivo | uniq.
Líneas que se ven iguales pero uniq no junta.Casi siempre es un espacio al final o un fin de línea de Windows (\r). Revísalo con cat -A archivo: verás $ al final de cada línea y ^M si viene de Windows.
Escribir uniq entrada.txt entrada.txt para guardar el resultado en el mismo archivo.El segundo argumento es el archivo de salida: uniq lo vacía antes de leerlo y te quedas sin datos. Guárdalo en uno nuevo: uniq entrada.txt limpio.txt.
§ 4

Preguntas frecuentes

¿Por qué uniq no quita todos los duplicados?
Porque solo quita las líneas repetidas que van seguidas. Para quitar todas, ordena primero con sort archivo | uniq, o usa directamente sort -u archivo.
¿Cómo contar cuántas veces se repite cada línea en Linux?
Con sort archivo | uniq -c. Si además quieres ver primero las que más se repiten, agrega | sort -rn al final.
¿Cuál es la diferencia entre sort -u y uniq?
sort -u ordena y quita duplicados en un solo paso. uniq no ordena: solo junta repeticiones seguidas, pero tiene opciones extra como -c para contar o -d para ver solo las repetidas.
¿Cómo ver solo las líneas duplicadas de un archivo?
Usa sort archivo | uniq -d. Muestra una vez cada línea que aparece dos o más veces. Con -u obtienes lo contrario: las que aparecen una sola vez.
§ 5

Ver también