Linux / Comando uniq: eliminar y contar líneas repetidas consecutivas
uniq reduce a filas adyacentes idénticas a una sola o muestra el número de repeticiones. Para eliminar valores duplicados de todo el archivo, normalmente primero se debe ordenar.
Las líneas iguales que están separadas no se agrupan con uniq por sí solo. Ordenar primero permite reunirlas, pero modifica el orden original. Si debe conservar el orden de eventos o registros, elija otro método de eliminación de duplicados según el resultado que necesite.
Sintaxis básica
uniq [opciones] [archivo_entrada [archivo_salida]]
La implementación instalada y las opciones pueden variar según la distribución. Verifique la descripción de man uniq en el sistema actual.
Ejemplos de uso
Eliminar duplicados adyacentes
Los ejemplos con events.txt y names.txt presuponen archivos de texto existentes en el directorio actual; sustitúyalos por los suyos. Cuando una línea se repite consecutivamente, se imprime una sola vez. El ejemplo autocontenido con printf de la sección siguiente permite practicar sin crear archivos.
uniq events.txt
Contar las apariciones de cada valor
Después de agrupar los mismos valores mediante ordenación, se indica el número de repeticiones con -c.
sort names.txt | uniq -c
Ver solo los valores duplicados
Se muestran los tipos de valores que aparecen consecutivamente dos o más veces.
sort names.txt | uniq -d
Distinguir entre duplicados adyacentes y duplicados totales
uniq agrupa solo filas idénticas consecutivas. A continuación, el último apple permanece por separado ya que está separado de las dos filas anteriores.
printf 'apple\napple\nbanana\napple\n' | uniq -c
Ejemplo de salida (el espacio antes del número puede variar según la implementación):
2 apple
1 banana
1 apple
Para agrupar líneas iguales de todo el archivo, ordene primero con el comando sort y envíe el resultado a uniq; por ejemplo, sort archivo.txt | uniq. Esta operación cambia el orden original. -d muestra una línea por grupo repetido y -u solo los grupos que contienen una única línea.
Opciones y formatos principales
| Opción o formato | Descripción |
|---|---|
-c |
Adjunte la cantidad de ocurrencias consecutivas delante de cada fila de salida. |
-d |
Muestre solo las filas duplicadas. |
-u |
Muestre solo las filas que aparecen una vez. |
-i |
Ignore mayúsculas y minúsculas al comparar. |
-f N |
Se excluyen los primeros N campos de la comparación. |
Precauciones al usar
En sort | uniq, los resultados de ordenamiento y comparación pueden variar según la configuración regional. Si necesita un agregado preciso basado en bytes, aplique el mismo entorno LC_ALL=C en ambos comandos. uniq -u significa que la fila aparece solo una vez, no todos los valores únicos.
Preguntas frecuentes
¿Por qué uniq no elimina las filas duplicadas que están separadas?
Porque compara la fila actual con la fila inmediatamente anterior. Para eliminar todos los duplicados, ordene la entrada para agrupar las filas iguales.
Documentación oficial
Puede consultar la documentación oficial de uniq para conocer el comportamiento exacto de las opciones y las diferencias según la implementación.




