Ordenación de texto en Linux

LinuxBeginner
Practicar Ahora

Introducción

La clasificación de texto es una habilidad esencial para gestionar y analizar datos de manera efectiva en entornos Linux. La capacidad de organizar archivos de texto en un orden específico puede mejorar significativamente la productividad cuando se trabaja con registros (logs), archivos de configuración o cualquier conjunto de datos basado en texto. Linux proporciona el poderoso comando sort que ofrece numerosas opciones para personalizar cómo se organizan los datos.

En este laboratorio (lab), aprenderás cómo usar el comando sort de Linux para organizar datos de texto de varias maneras. Comprenderás cómo ordenar archivos alfabéticamente, numéricamente y por campos específicos. Estas habilidades fundamentales son inestimables para cualquier persona que trabaje con el procesamiento de datos o la administración de sistemas en entornos Linux.

Al final de este laboratorio (lab), serás capaz de ordenar eficientemente diferentes tipos de datos de texto y aplicar estas habilidades a tus propios proyectos y flujos de trabajo.

Clasificación básica de texto con el comando sort

El comando sort en Linux se utiliza para organizar las líneas de archivos de texto en un orden específico. Por defecto, ordena los archivos alfabéticamente, pero ofrece muchas opciones para personalizar el comportamiento de clasificación.

Comencemos creando un archivo de texto simple que usaremos para practicar la clasificación. Crearás un archivo que contenga una lista de lenguajes de programación.

  1. Primero, navega a tu directorio de proyecto:
cd ~/project
  1. Crea un nuevo archivo llamado languages.txt utilizando el siguiente comando:
echo -e "Python\nJava\nRuby\nGo\nJavaScript\nPHP\nRust\nC++\nSwift\nKotlin" > languages.txt

Este comando crea un archivo con 10 nombres de lenguajes de programación, cada uno en una línea separada.

  1. Visualiza el contenido del archivo que acabas de crear:
cat languages.txt

Debes ver la siguiente salida:

Python
Java
Ruby
Go
JavaScript
PHP
Rust
C++
Swift
Kotlin
  1. Ahora, ordenemos este archivo alfabéticamente utilizando el comando sort:
sort languages.txt

La salida debería verse así:

C++
Go
Java
JavaScript
Kotlin
PHP
Python
Ruby
Rust
Swift

Observa cómo las líneas ahora están ordenadas alfabéticamente. El comando sort lee todas las líneas de la entrada, las ordena y muestra el resultado en la salida estándar. El archivo original permanece sin cambios.

  1. Si quieres guardar la salida ordenada en un nuevo archivo, puedes usar la redirección de salida:
sort languages.txt > sorted_languages.txt
  1. Verifica el contenido del nuevo archivo:
cat sorted_languages.txt

Debes ver la misma salida ordenada que antes.

El comando sort también ofrece la opción -r para invertir el orden de clasificación. Probémoslo:

sort -r languages.txt

La salida estará en orden alfabético inverso:

Swift
Rust
Ruby
Python
PHP
Kotlin
JavaScript
Java
Go
C++

Ahora has aprendido el uso básico del comando sort para la clasificación alfabética.

Clasificación numérica y separadores de campos

En muchos escenarios del mundo real, es posible que necesites ordenar archivos que contengan valores numéricos o datos con múltiples campos. El comando sort ofrece opciones para estos casos.

Clasificación numérica

Creemos un archivo con valores numéricos para explorar la clasificación numérica:

  1. Crea un archivo llamado numbers.txt:
cd ~/project
echo -e "10\n5\n100\n20\n1\n50" > numbers.txt
  1. Visualiza el contenido del archivo:
cat numbers.txt

Debes ver:

10
5
100
20
1
50
  1. Si usas el comando sort básico en este archivo:
sort numbers.txt

La salida será:

1
10
100
20
5
50

Observa que esto no está en el orden numérico correcto porque sort trata cada línea como texto por defecto. La cadena "100" viene antes que "20" en orden lexicográfico (diccionario).

  1. Para ordenar numéricamente, usa la opción -n:
sort -n numbers.txt

Ahora verás el orden numérico correcto:

1
5
10
20
50
100

Clasificación de archivos con múltiples campos

A menudo, los archivos contienen múltiples campos separados por delimitadores como comas, tabulaciones o espacios. El comando sort te permite especificar en qué campo se debe realizar la clasificación.

  1. Crea un archivo CSV (Valores Separados por Comas) con algunos datos de muestra:
cd ~/project
echo -e "Name,Age,City\nAlice,28,New York\nBob,35,Los Angeles\nCarol,22,Chicago\nDavid,31,Boston\nEve,26,Seattle" > people.csv
  1. Visualiza el contenido del archivo:
cat people.csv

Debes ver:

Name,Age,City
Alice,28,New York
Bob,35,Los Angeles
Carol,22,Chicago
David,31,Boston
Eve,26,Seattle
  1. Para ordenar este archivo por el segundo campo (Edad), usa la opción -t para especificar el separador de campos (coma en este caso) y la opción -k para especificar el número del campo:
sort -t, -k2,2n people.csv

La opción -t, establece el separador de campos como coma, y -k2,2n le indica a sort que use el segundo campo para la clasificación y que lo trate como un valor numérico.

La salida debería ser:

Name,Age,City
Carol,22,Chicago
Eve,26,Seattle
Alice,28,New York
David,31,Boston
Bob,35,Los Angeles
  1. También puedes ordenar por el tercer campo (Ciudad) alfabéticamente:
sort -t, -k3,3 people.csv

La salida será:

Name,Age,City
David,31,Boston
Carol,22,Chicago
Bob,35,Los Angeles
Alice,28,New York
Eve,26,Seattle

Al utilizar estas opciones, puedes ordenar eficazmente archivos con diversos formatos de datos según tus necesidades.

Técnicas avanzadas de clasificación

En este paso, exploraremos algunas características avanzadas del comando sort que pueden ayudarte a manejar requisitos de clasificación más complejos.

Eliminación de duplicados

A veces, tus datos pueden contener líneas duplicadas que deseas eliminar. El comando sort ofrece la opción -u para mostrar solo líneas únicas.

  1. Crea un archivo con algunas entradas duplicadas:
cd ~/project
echo -e "apple\nbanana\napple\ncherry\nbanana\ndates" > fruits.txt
  1. Visualiza el contenido del archivo:
cat fruits.txt

Debes ver:

apple
banana
apple
cherry
banana
dates
  1. Utiliza la opción -u para ordenar y eliminar duplicados:
sort -u fruits.txt

La salida será:

apple
banana
cherry
dates

Clasificación sin distinción entre mayúsculas y minúsculas

Por defecto, sort distingue entre mayúsculas y minúsculas, lo que significa que "Apple" y "apple" se consideran diferentes. Si deseas ignorar las mayúsculas y minúsculas durante la clasificación, utiliza la opción -f.

  1. Crea un archivo con entradas en mayúsculas y minúsculas mezcladas:
cd ~/project
echo -e "apple\nBanana\nApple\ncherry\nBanana\nDates" > mixed_case.txt
  1. Visualiza el contenido del archivo:
cat mixed_case.txt

Debes ver:

apple
Banana
Apple
cherry
Banana
Dates
  1. Ordena el archivo distinguiendo entre mayúsculas y minúsculas (por defecto):
sort mixed_case.txt

La salida será:

Apple
Banana
Banana
Dates
apple
cherry

Ten en cuenta que las letras mayúsculas preceden a las minúsculas en el orden de clasificación ASCII.

  1. Ahora ordena el archivo ignorando las mayúsculas y minúsculas:
sort -f mixed_case.txt

La salida será:

apple
Apple
Banana
Banana
cherry
Dates

Observa cómo "apple" y "Apple" ahora se tratan como iguales para fines de clasificación.

Clasificación en orden de meses

El comando sort también puede ordenar según los nombres de los meses utilizando la opción -M:

  1. Crea un archivo con nombres de meses:
cd ~/project
echo -e "December\nFebruary\nJanuary\nMarch\nNovember\nApril" > months.txt
  1. Ordena los meses en orden calendario:
sort -M months.txt

La salida será:

January
February
March
April
November
December

Verificación de si un archivo ya está ordenado

Puedes utilizar la opción -c para verificar si un archivo ya está ordenado sin realmente ordenarlo:

sort -c sorted_languages.txt

Si el archivo ya está ordenado, no habrá salida. Si no está ordenado, obtendrás un mensaje de error que indica la primera línea fuera de orden.

Prueba con un archivo desordenado:

sort -c languages.txt

Debes ver un mensaje de error como:

sort: languages.txt:2: disorder: Java

Estas técnicas avanzadas de clasificación te dan más control sobre cómo se organizan y procesan tus datos.

Resumen

En este laboratorio, has aprendido cómo utilizar el comando sort de Linux para organizar y gestionar datos de texto de manera efectiva. Has explorado diversas técnicas y opciones de clasificación que se pueden aplicar a diferentes tipos de datos.

Conceptos clave cubiertos en este laboratorio:

  1. Clasificación alfabética básica utilizando el comando sort
  2. Guardar la salida ordenada en un nuevo archivo utilizando redirección
  3. Clasificación en orden inverso con la opción -r
  4. Clasificación numérica con la opción -n
  5. Clasificación de archivos con múltiples campos utilizando las opciones -t y -k
  6. Eliminación de entradas duplicadas con la opción -u
  7. Clasificación sin distinción entre mayúsculas y minúsculas utilizando la opción -f
  8. Clasificación basada en meses con la opción -M
  9. Verificación de si un archivo ya está ordenado con la opción -c

Estas técnicas de clasificación son habilidades fundamentales para cualquier persona que trabaje con datos de texto en entornos Linux. Se pueden aplicar a diversos escenarios del mundo real, como:

  • Análisis de archivos de registro
  • Procesamiento de datos CSV
  • Organización de archivos de configuración
  • Preparación de datos para un análisis o procesamiento posterior

Al dominar estas técnicas de clasificación, has agregado una herramienta valiosa a tu conjunto de herramientas de la línea de comandos de Linux que te ayudará a trabajar de manera más eficiente con datos de texto.