uniq
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.
uniq [opciones] [ENTRADA [SALIDA]]Despiece
6 ejemplosQuitar repeticiones seguidas
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | uniq | Comando | Quita las líneas iguales que van una tras otra. |
| 2 | lista.txt | Argumento | El archivo que lee. No se modifica. |
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
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | sort | Comando | Ordena las líneas para que las iguales queden juntas. |
| 2 | frutas.txt | Argumento | El archivo con la lista. |
| 3 | | | Operador | Pipe: manda la salida de sort a uniq. |
| 4 | uniq | Comando | Quita las repetidas, que ahora ya están juntas. |
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
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | sort | Comando | Ordena las líneas para juntar las iguales. |
| 2 | frutas.txt | Argumento | El archivo con la lista. |
| 3 | | | Operador | Pipe: manda la salida de sort a uniq. |
| 4 | uniq | Comando | Junta las repetidas. |
| 5 | -c | Opción | Antepone el número de repeticiones. |
Algo como: 3 manzana, 1 pera, 2 uva. Cada línea con su conteo a la izquierda.
Ver solo lo que está repetido
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | sort | Comando | Ordena las líneas para juntar las iguales. |
| 2 | correos.txt | Argumento | Una lista de correos, uno por línea. |
| 3 | | | Operador | Pipe: manda la salida de sort a uniq. |
| 4 | uniq | Comando | Compara las líneas seguidas. |
| 5 | -d | Opción | Solo muestra las que aparecen dos o más veces. |
Lista los correos duplicados, una vez cada uno. Útil para encontrar registros repetidos.
Contar sin importar mayúsculas
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | sort | Comando | Ordena las líneas. |
| 2 | -f | Opción | Ordena sin distinguir mayúsculas, para que Ana y ana queden juntas. |
| 3 | nombres.txt | Argumento | El archivo con la lista. |
| 4 | | | Operador | Pipe: manda la salida de sort a uniq. |
| 5 | uniq | Comando | Junta las repetidas. |
| 6 | -ic | Opción | -i ignora mayúsculas al comparar y -c cuenta las repeticiones. |
Ana, ANA y ana cuentan como el mismo nombre.
Ver las IP que más visitan tu sitio
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | cut | Comando | Recorta columnas de cada línea. |
| 2 | -d | Opción | Indica el separador de columnas. |
| 3 | ' ' | Valor | El separador es un espacio. |
| 4 | -f | Opción | Indica qué columna tomar. |
| 5 | 1 | Valor | La primera columna, que en los logs de nginx y Apache es la IP. |
| 6 | access.log | Argumento | El log de accesos del servidor web. |
| 7 | | | Operador | Pipe: manda las IP a sort. |
| 8 | sort | Comando | Ordena las IP para juntar las iguales. |
| 9 | | | Operador | Pipe: manda la lista ordenada a uniq. |
| 10 | uniq | Comando | Junta las IP repetidas. |
| 11 | -c | Opción | Cuenta cuántas veces aparece cada IP. |
| 12 | | | Operador | Pipe: manda los conteos a otro sort. |
| 13 | sort | Comando | Ordena los resultados. |
| 14 | -rn | Opción | De mayor a menor (-r) y como números (-n). |
Arriba aparecen las IP con más peticiones y su número. Es una de las combinaciones más usadas para revisar logs.
Opciones
Las que sí vas a usar| Opción | Qué hace |
|---|---|
| -c--count | Pone al inicio de cada línea cuántas veces se repetía. |
| -d--repeated | Muestra solo las líneas que estaban repetidas, una vez cada una. |
| -u--unique | Muestra solo las líneas que no se repiten. |
| -i--ignore-case | Trata mayúsculas y minúsculas como iguales al comparar. |
| -f--skip-fields | Ignora los primeros N campos (separados por espacios) al comparar. |
| -w--check-chars | Compara solo los primeros N caracteres de cada línea. |
Fallas comunes
| Falla | Remedio |
|---|---|
| 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. |
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.