Introducción
En el mundo de la administración de sistemas y el procesamiento de texto, el comando uniq es una herramienta esencial para identificar y eliminar líneas duplicadas en archivos ordenados. Aunque su funcionamiento parece sencillo, su poder se revela cuando se combina con otras utilidades como sort, grep o awk. En este artículo exploraremos en profundidad cómo funciona uniq, sus opciones más útiles y ejemplos prácticos que puedes aplicar inmediatamente en tu flujo de trabajo diario.
¿Qué es uniq y cuándo usarlo?
El nombre uniq proviene de “unique” (único). Su misión principal es leer una entrada de texto línea por línea y, siempre que las líneas estén adyacentes e idénticas, mostrar solo una copia. Esto significa que, para que uniq actúe correctamente, el archivo de entrada debe estar previamente ordenado; de lo contrario, las duplicaciones separadas no serán detectadas. Es muy útil en logs, archivos de configuración, listas de usuarios o cualquier escenario donde necesites depurar datos repetidos.
Sintaxis básica
La forma más simple de invocar uniq es:
uniq [opciones] archivo
Si no se especifica un archivo, el comando lee desde la entrada estándar, lo que permite encadenarlo fácilmente con tuberías (|). Por ejemplo:
sort archivo.txt | uniq
Ordena el contenido y, a continuación, elimina las repeticiones adyacentes.
Opciones más utilizadas
-c: antepone a cada línea el número de veces que aparece.-d: muestra únicamente las líneas que están duplicadas (una copia de cada conjunto).-u: muestra únicamente las líneas que no se repiten (únicas).-i: ignora mayúsculas y minúsculas al comparar.-f N: omite los primeros N campos al comparar (útil con archivos delimitados).-s N: omite los primeros N caracteres de cada línea.-w N: compara solo los primeros N caracteres de cada línea.
Ejemplos prácticos
1. Eliminar duplicados simples
Supongamos un archivo nombres.txt con la siguiente lista (ya ordenada):
Ana Ana Luis Luis Luis María
Ejecutamos:
uniq nombres.txt
Resultado:
Ana Luis María
2. Contar ocurrencias
Para saber cuántas veces aparece cada nombre:
uniq -c nombres.txt
Salida:
2 Ana
3 Luis
1 María
3. Mostrar solo los duplicados
Si nos interesan únicamente los nombres que se repiten:
uniq -d nombres.txt
Resultado:
Ana Luis
4. Ignorar mayúsculas/minúsculas
Con un archivo que tenga variaciones de caso:
ana ANA Luis luis María
Primero ordenamos sin distinguir caso y luego aplicamos uniq -i:
sort -f nombres.txt | uniq -i
Obtendremos una única entrada por cada nombre sin importar mayúsculas.
Combinando uniq con otros comandos
El verdadero potencial de uniq se manifiesta en tuberías. Algunos patrones comunes:
cat archivo | sort | uniq -c | sort -nr: cuenta frecuencias y ordena de mayor a menor.grep "error" log.txt | sort | uniq -c: cuántas veces aparece cada mensaje de error.cut -d: -f1 /etc/passwd | sort | uniq -d: detecta usuarios duplicados en el archivo de contraseñas (útil para auditorías de seguridad).
Consejos y trucos
- Siempre ordena antes de usar
uniqa menos que estés seguro de que el archivo ya está ordenado. - Usa
uniq -zsi trabajas con entradas separadas por null (útil confind -print0). - Combina
awkpara hacer ununiqpersonalizado cuando necesitas comparar solo ciertos campos. - En scripts, verifica el código de salida:
uniqdevuelve 0 si tuvo éxito y 1 si hubo errores de escritura.
Conclusión
El comando uniq es una pieza pequeña pero poderosa del arsenal de cualquier administrador Linux o amante de la línea de comandos. Su simplicidad oculta una gran versatilidad, especialmente cuando se combina con herramientas de ordenado y filtrado. Dominar sus opciones te permitirá depurar logs, limpiar listas y realizar análisis de datos de forma rápida y eficiente. La próxima vez que te encuentres frente a un archivo con líneas repetidas, recuerda que uniq está listo para dejarlo limpio y ordenado.