Opciones avanzadas de uniq y aplicaciones prácticas
Ahora que entiendes el uso básico de uniq
y cómo combinarlo con sort
, exploremos algunas opciones adicionales del comando uniq
que lo hacen aún más poderoso para tareas de procesamiento de datos.
Contando ocurrencias con -c
La opción -c
cuenta el número de ocurrencias de cada línea. Esto es útil cuando quieres saber cuántas veces aparece cada línea única en tu archivo:
sort ~/project/duel_log.txt | uniq -c
Deberías ver una salida como esta:
2 potion
2 shield
2 sword
Esto muestra que cada elemento aparece dos veces en nuestro archivo original.
Encontrando solo líneas duplicadas con -d
Si solo estás interesado en encontrar líneas duplicadas (líneas que aparecen más de una vez), puedes usar la opción -d
:
sort ~/project/duel_log.txt | uniq -d
Salida:
potion
shield
sword
Dado que todos los elementos en nuestro archivo tienen duplicados, todos se listan en la salida.
Creando un archivo con solo entradas únicas
Creemos un nuevo archivo con contenido más variado para demostrar mejor el comando uniq
:
echo -e "apple\napple\napple\nbanana\ncherry\ncherry\ngrape" > ~/project/fruits.txt
Examinemos este archivo:
cat ~/project/fruits.txt
Salida:
apple
apple
apple
banana
cherry
cherry
grape
Ahora usemos la opción -u
para encontrar entradas que aparecen exactamente una vez:
sort ~/project/fruits.txt | uniq -u
Salida:
banana
grape
Esto muestra que "banana" y "grape" aparecen solo una vez en nuestro archivo.
Aplicación en el mundo real: Análisis de registros (logs)
Creemos un archivo de registro (log) simple para simular una aplicación en el mundo real:
echo -e "INFO: System started\nERROR: Connection failed\nINFO: User logged in\nWARNING: Low memory\nERROR: Connection failed\nINFO: System started" > ~/project/system.log
Ahora, analicemos este archivo de registro para averiguar qué tipos de mensajes aparecen y cuántas veces:
cat ~/project/system.log | sort | uniq -c
La salida debería ser similar a:
2 ERROR: Connection failed
2 INFO: System started
1 INFO: User logged in
1 WARNING: Low memory
Esto te da una visión rápida de los tipos de eventos en tu archivo de registro y sus frecuencias.
También puedes extraer solo los tipos de mensajes (INFO, ERROR, WARNING) usando el comando cut
:
cat ~/project/system.log | cut -d: -f1 | sort | uniq -c
Salida:
2 ERROR
3 INFO
1 WARNING
Este análisis muestra que de 6 entradas de registro, 3 son mensajes INFO, 2 son mensajes ERROR y 1 es un mensaje WARNING.
Estos ejemplos demuestran cómo combinar comandos simples como sort
, uniq
y cut
puede crear potentes tuberías (pipelines) de procesamiento de datos en Linux.