Comando uniq de Linux: Filtrado de duplicados

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, exploraremos el comando uniq en Linux, una herramienta poderosa para identificar y filtrar líneas duplicadas en archivos de texto. Utilizaremos un escenario en el que eres un 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, brindando información valiosa sobre el comportamiento de los clientes.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/sort("Text Sorting") linux/TextProcessingGroup -.-> linux/uniq("Duplicate Filtering") subgraph Lab Skills linux/cat -.-> lab-219199{{"Comando uniq de Linux: Filtrado de duplicados"}} linux/cd -.-> lab-219199{{"Comando uniq de Linux: Filtrado de duplicados"}} linux/sort -.-> lab-219199{{"Comando uniq de Linux: Filtrado de duplicados"}} linux/uniq -.-> lab-219199{{"Comando uniq de Linux: Filtrado de duplicados"}} end

Examinando los datos crudos de los clientes

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

Primero, necesitamos navegar hasta el directorio del proyecto. En Linux, usamos el comando cd para cambiar de directorio. La tilde (~) es un atajo que representa tu directorio de inicio.

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. Usaremos el comando cat, que es la abreviatura de "concatenar". Se utiliza comúnmente para mostrar el contenido de 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 los nombres de los clientes y sus compras, y algunos clientes realizan múltiples compras. Cada línea representa una sola compra, con el nombre del cliente seguido de la categoría del artículo que compró, separados por una coma.

Ordenando los datos

Antes de poder usar el comando uniq de manera efectiva, necesitamos ordenar nuestros datos. El comando uniq funciona en líneas duplicadas adyacentes, por lo que ordenar los datos asegura que cualquier entrada duplicada esté junto a la otra.

Usaremos 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 estamos guardando 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 ahora están ordenadas alfabéticamente por nombre de cliente. Esta ordenación alfabética agrupa todas las compras del mismo cliente, lo cual es crucial para los siguientes pasos.

Usando 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 de los clientes.

Ejecuta el siguiente comando:

uniq sorted_purchases.txt unique_purchases.txt

Desglosemos este comando:

  • uniq es el comando para filtrar las 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 de los clientes, con cada cliente apareciendo solo una vez. Esto nos da una visión clara de los diferentes tipos de compras realizadas, sin repeticiones.

Contando compras con uniq -c

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

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 dice a uniq que prefije las líneas con el número de ocurrencias.
  • 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 ocurrencias 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 ese cliente realizó una compra. Por ejemplo, Alice realizó 3 compras de artículos de electrónica, mientras que Frank realizó 1 compra de artículos de deporte.

Encontrando clientes recurrentes con uniq -d

Como analista de datos, es posible que estés interesado en identificar a los clientes recurrentes. Podemos usar la opción -d del comando uniq para mostrar solo 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 dice a uniq que solo imprima las líneas 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 puede ser valiosa para programas de fidelización de clientes o campañas de marketing segmentadas.

Resumen

En este laboratorio, exploramos el comando uniq en Linux y su aplicación en el análisis de datos de compras de clientes. Aprendimos cómo:

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

Estas habilidades son valiosas para tareas de análisis de datos, ya que te ayudan a procesar eficientemente y extraer información de grandes conjuntos de datos.

Otras opciones del comando uniq no cubiertas en este laboratorio incluyen:

  • -u: Mostrar solo líneas únicas (líneas que aparecen exactamente una vez)
  • -i: Ignorar mayúsculas y minúsculas al comparar líneas
  • -f N: Saltar los primeros N campos al comparar líneas
  • -s N: Saltar los primeros N caracteres al comparar líneas

Recursos