Comando uniq de Linux: Filtrado de Duplicados

LinuxBeginner
Practicar Ahora

Introducción

En esta práctica de laboratorio, exploraremos el comando uniq en Linux, una herramienta potente para identificar y filtrar líneas duplicadas en archivos de texto. Utilizaremos un escenario en el que trabajas como analista de datos en una empresa de comercio electrónico, con la tarea de analizar los datos de compras de los clientes. El comando uniq te ayudará a procesar estos datos de manera eficiente, proporcionando información valiosa sobre el comportamiento del cliente.

Esta es una Práctica Guiada, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que esta es una práctica de nivel principiante con una tasa de finalización del 99%. Ha recibido una tasa de valoraciones positivas del 100% por parte de los alumnos.

Examen de los datos brutos de clientes

Comencemos examinando nuestros datos brutos de compras de clientes. Estos datos representan las compras diarias realizadas por los usuarios.

Primero, necesitamos navegar al directorio del proyecto. En Linux, utilizamos el comando cd para cambiar de directorio. La tilde (~) es un atajo que representa tu directorio personal (home).

cd ~/project

Este comando cambia nuestro directorio de trabajo actual a /home/labex/project. Ahora que estamos en el directorio correcto, veamos el contenido de nuestro archivo de datos de clientes. Utilizaremos el comando cat, que es la abreviatura de "concatenate" (concatenar). Se usa comúnmente para mostrar el contenido de los archivos.

cat customer_purchases.txt

Deberías ver una salida similar a esta:

Alice,Electronics
Bob,Books
Charlie,Clothing
Alice,Electronics
David,Home Goods
Bob,Books
Eve,Toys
Charlie,Clothing
Frank,Sports
Alice,Electronics

Este archivo contiene nombres de clientes y sus compras, donde algunos clientes han realizado múltiples transacciones. Cada línea representa una única compra, con el nombre del cliente seguido de la categoría del artículo comprado, separados por una coma.

Ordenación de los datos

Antes de poder usar el comando uniq de manera efectiva, necesitamos ordenar nuestros datos. El comando uniq funciona sobre líneas duplicadas adyacentes, por lo que la ordenación garantiza que cualquier entrada duplicada quede situada una junto a la otra.

Utilizaremos el comando sort para ordenar alfabéticamente nuestros datos de clientes:

sort customer_purchases.txt > sorted_purchases.txt

Desglosemos este comando:

  • sort es el comando para ordenar líneas de texto.
  • customer_purchases.txt es el archivo de entrada que estamos ordenando.
  • > es un operador de redirección. Toma la salida del comando a su izquierda y la escribe en el archivo a su derecha.
  • sorted_purchases.txt es el nuevo archivo donde guardaremos los datos ordenados.

Ahora, veamos el contenido del archivo ordenado:

cat sorted_purchases.txt

Deberías ver una salida similar a esta:

Alice,Electronics
Alice,Electronics
Alice,Electronics
Bob,Books
Bob,Books
Charlie,Clothing
Charlie,Clothing
David,Home Goods
Eve,Toys
Frank,Sports

Observa cómo las entradas están ahora ordenadas alfabéticamente por el nombre del cliente. Esta ordenación alfabética agrupa todas las compras del mismo cliente, lo cual es crucial para los siguientes pasos.

Uso de uniq para eliminar entradas duplicadas

Ahora que nuestros datos están ordenados, podemos usar el comando uniq para eliminar las entradas duplicadas. Esto nos dará una lista de compras únicas por cliente.

Ejecuta el siguiente comando:

uniq sorted_purchases.txt unique_purchases.txt

Desglosemos este comando:

  • uniq es el comando para filtrar líneas repetidas en un archivo.
  • sorted_purchases.txt es nuestro archivo de entrada (los datos ordenados).
  • unique_purchases.txt es el archivo de salida donde guardaremos los resultados.

El comando uniq lee los datos ordenados de sorted_purchases.txt, elimina las líneas duplicadas adyacentes y guarda el resultado en un nuevo archivo llamado unique_purchases.txt.

Ahora, veamos el contenido del nuevo archivo:

cat unique_purchases.txt

Deberías ver una salida similar a esta:

Alice,Electronics
Bob,Books
Charlie,Clothing
David,Home Goods
Eve,Toys
Frank,Sports

Ahora tenemos una lista de compras únicas, donde cada cliente aparece solo una vez por categoría. Esto nos ofrece una visión clara de los diferentes tipos de compras realizadas, sin repeticiones innecesarias.

Conteo de compras con uniq -c

El comando uniq se vuelve aún más potente cuando utilizamos sus opciones. Vamos a usar la opción -c para contar cuántas veces realizó una compra cada cliente.

Ejecuta el siguiente comando:

uniq -c sorted_purchases.txt purchase_counts.txt

Desglosemos este comando:

  • uniq es nuestro comando para filtrar líneas repetidas.
  • -c es una opción que le indica a uniq que anteponga a cada línea el número de veces que aparece.
  • sorted_purchases.txt es nuestro archivo de entrada.
  • purchase_counts.txt es el archivo de salida donde guardaremos los resultados.

Este comando cuenta el número de apariciones de cada línea única y guarda el resultado en purchase_counts.txt.

Ahora, veamos el contenido de este nuevo archivo:

cat purchase_counts.txt

Deberías ver una salida similar a esta:

   3 Alice,Electronics
   2 Bob,Books
   2 Charlie,Clothing
   1 David,Home Goods
   1 Eve,Toys
   1 Frank,Sports

El número al principio de cada línea indica cuántas veces realizó esa compra el cliente. Por ejemplo, Alice realizó 3 compras de Electrónica, mientras que Frank realizó 1 compra de artículos de Deportes.

Identificación de clientes recurrentes con uniq -d

Como analista de datos, podrías estar interesado en identificar a los clientes recurrentes. Podemos usar la opción -d del comando uniq para mostrar únicamente las líneas duplicadas, que representan a los clientes que realizaron múltiples compras.

Ejecuta el siguiente comando:

uniq -d sorted_purchases.txt repeat_customers.txt

Desglosemos este comando:

  • uniq es nuestro comando para filtrar líneas repetidas.
  • -d es una opción que le indica a uniq que solo imprima las líneas que están duplicadas.
  • sorted_purchases.txt es nuestro archivo de entrada.
  • repeat_customers.txt es el archivo de salida donde guardaremos los resultados.

Este comando identifica las líneas duplicadas en sorted_purchases.txt y las guarda en repeat_customers.txt.

Veamos el contenido de este nuevo archivo:

cat repeat_customers.txt

Deberías ver una salida similar a esta:

Alice,Electronics
Bob,Books
Charlie,Clothing

Estos son los clientes que realizaron más de una compra. Esta información podría ser valiosa para programas de fidelización de clientes o campañas de marketing dirigidas.

Resumen

En esta práctica de laboratorio, exploramos el comando uniq en Linux y su aplicación en el análisis de datos de compras de clientes. Aprendimos a:

  1. Preparar los datos para su uso con uniq ordenándolos primero.
  2. Usar uniq para eliminar entradas duplicadas de un archivo ordenado.
  3. Usar uniq -c para contar las apariciones de cada línea única.
  4. Usar uniq -d para identificar líneas duplicadas.

Estas habilidades son valiosas para las tareas de análisis de datos, ayudándote a procesar y extraer información de grandes conjuntos de datos de manera eficiente.

Otras opciones del comando uniq que no se cubrieron en esta práctica incluyen:

  • -u: Muestra solo las líneas únicas (líneas que aparecen exactamente una vez).
  • -i: Ignora la distinción entre mayúsculas y minúsculas al comparar líneas.
  • -f N: Omite los primeros N campos al comparar líneas.
  • -s N: Omite los primeros N caracteres al comparar líneas.

Recursos adicionales