Comando sort de Linux: Ordenamiento de texto

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, explorarás el versátil comando sort en Linux, una herramienta poderosa para organizar y ordenar datos de texto. Como administrador de una escuela, utilizarás varias opciones del comando sort para gestionar y analizar de manera eficiente la información de los estudiantes. Esta experiencia práctica te ayudará a comprender cómo manipular datos en escenarios del mundo real utilizando herramientas de la línea de comandos de Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/TextProcessingGroup -.-> linux/sort("Text Sorting") subgraph Lab Skills linux/sort -.-> lab-219196{{"Comando sort de Linux: Ordenamiento de texto"}} end

Ordenamiento básico de nombres de estudiantes

Comencemos ordenando una lista de nombres de estudiantes alfabéticamente. Esta es una tarea común al crear listas de clase o organizar registros de estudiantes.

Primero, veamos el contenido de nuestra lista de estudiantes:

cat ~/project/students.txt

Deberías ver una lista de nombres de estudiantes sin ningún orden en particular, similar a esta:

David Lee
Alice Johnson
Charlie Brown
Bob Smith
Eve Wilson

Ahora, usemos el comando sort para ordenar estos nombres alfabéticamente:

sort ~/project/students.txt

Este comando mostrará la lista ordenada de nombres de estudiantes en tu pantalla. La salida debería verse así:

Alice Johnson
Bob Smith
Charlie Brown
David Lee
Eve Wilson

El comando sort, por defecto, ordena las líneas alfabéticamente. Compara las líneas carácter por carácter, comenzando desde el principio de cada línea. Es por eso que "Alice" viene antes que "Bob", y así sucesivamente.

Si no ves ninguna salida, ¡no te preocupes! El comando funcionó, pero simplemente mostró el resultado en la terminal. Si quieres guardar la lista ordenada en un nuevo archivo, puedes usar el operador de redirección de salida > de la siguiente manera: sort ~/project/students.txt > ~/project/sorted_students.txt

Ordenamiento por edades de estudiantes

A continuación, ordenaremos a los estudiantes por sus edades. Esto puede ser útil al organizar a los estudiantes en grupos o actividades adecuadas para su edad.

Primero, echemos un vistazo a nuestros datos:

cat ~/project/student_ages.txt

Verás una lista de estudiantes con sus edades, como esta:

David Lee:21
Alice Johnson:18
Charlie Brown:19
Bob Smith:20
Eve Wilson:18

Para ordenar esta lista por edad, usaremos la opción -n, que le indica a sort que trate los números como valores numéricos en lugar de cadenas de texto:

sort -n -t: -k2 ~/project/student_ages.txt

Desglosemos este comando:

  • -n: Esta opción le dice a sort que realice un ordenamiento numérico.
  • -t:: Esto especifica que los campos están separados por dos puntos.
  • -k2: Esto le dice a sort que use el segundo campo (la edad) como clave de ordenamiento.

Esto mostrará la lista de estudiantes ordenada de la más joven a la más vieja:

Alice Johnson:18
Eve Wilson:18
Charlie Brown:19
Bob Smith:20
David Lee:21

Sin la opción -n, sort trataría las edades como cadenas de texto, lo que resultaría en un orden incorrecto (por ejemplo, 18, 19, 20, 21, 3). La opción -n asegura un ordenamiento numérico adecuado.

Ordenamiento inverso de calificaciones de estudiantes

Ahora, ordenemos las calificaciones de los estudiantes en orden descendente. Esto se utiliza a menudo para clasificar a los estudiantes o identificar a los mejores rendidores.

Primero, veamos la lista actual:

cat ~/project/student_grades.txt

Deberías ver algo como esto:

David Lee:87
Alice Johnson:92
Charlie Brown:95
Bob Smith:88
Eve Wilson:91

Para ordenar las calificaciones de mayor a menor, usaremos la opción -r para el orden inverso, junto con -n para el ordenamiento numérico:

sort -nr -t: -k2 ~/project/student_grades.txt

A continuación, se explica lo que hace cada parte del comando:

  • -n: Realiza un ordenamiento numérico.
  • -r: Invierte el orden de clasificación (de descendente en lugar de ascendente).
  • -t:: Especifica que los campos están separados por dos puntos.
  • -k2: Utiliza el segundo campo (la calificación) como clave de ordenamiento.

Este comando mostrará las calificaciones de los estudiantes de mayor a menor:

Charlie Brown:95
Alice Johnson:92
Eve Wilson:91
Bob Smith:88
David Lee:87

La opción -r es especialmente útil cuando se desea ver primero los valores más altos, lo cual es común en muchos escenarios del mundo real, como la clasificación, la identificación de los mejores rendidores o la priorización de tareas.

Ordenamiento de registros de estudiantes por múltiples campos

En este paso, ordenaremos un registro de estudiantes más complejo que incluye nombre, edad y calificación. Este es un escenario común cuando se trabaja con bases de datos completas de estudiantes.

Primero, echemos un vistazo a nuestros datos:

cat ~/project/student_records.txt

Verás que cada línea contiene el nombre, la edad y la calificación de un estudiante, separados por dos puntos, como este:

David Lee:21:87
Alice Johnson:18:92
Charlie Brown:19:95
Bob Smith:20:88
Eve Wilson:18:91

Para ordenar este archivo por edad (segundo campo) y luego por calificación (tercer campo) si las edades son iguales, usaremos:

sort -t: -k2n -k3nr ~/project/student_records.txt

A continuación, se explica lo que significa cada parte del comando:

  • -t: especifica que los campos están separados por dos puntos
  • -k2n ordena en función del segundo campo (edad) numéricamente
  • -k3nr luego ordena en función del tercer campo (calificación) numéricamente en orden inverso

Esto mostrará los registros de estudiantes ordenados primero por edad (en orden ascendente) y luego por calificación (en orden descendente) cuando las edades son iguales:

Alice Johnson:18:92
Eve Wilson:18:91
Charlie Brown:19:95
Bob Smith:20:88
David Lee:21:87

Este tipo de ordenamiento por múltiples claves es extremadamente útil cuando se necesita organizar datos en función de múltiples criterios. En este caso, estamos agrupando a los estudiantes por edad y, dentro de cada grupo de edad, los estamos clasificando por sus calificaciones.

Eliminación de entradas duplicadas

A veces, los registros de estudiantes pueden contener duplicados, quizás debido a errores de entrada de datos o a múltiples envíos. Aprendamos cómo eliminar estos duplicados.

Primero, echemos un vistazo a un archivo con posibles duplicados:

cat ~/project/student_clubs.txt

Puedes ver algo como esto:

Alice Johnson:Chess Club
Bob Smith:Debate Team
Charlie Brown:Chess Club
David Lee:Science Club
Eve Wilson:Debate Team
Alice Johnson:Chess Club
Bob Smith:Science Club

Para ordenar esta lista y eliminar los duplicados, usaremos la opción -u:

sort -u ~/project/student_clubs.txt

Este comando mostrará una lista ordenada de membresías únicas de clubes de estudiantes:

Alice Johnson:Chess Club
Bob Smith:Debate Team
Bob Smith:Science Club
Charlie Brown:Chess Club
David Lee:Science Club
Eve Wilson:Debate Team

La opción -u le dice a sort que muestre solo la primera línea de un grupo de líneas iguales. En otras palabras, elimina las líneas duplicadas después de ordenar. Esto es especialmente útil cuando necesitas crear una lista de entradas únicas o cuando intentas identificar y eliminar datos redundantes.

Ten en cuenta que "Bob Smith" aparece dos veces porque pertenece a dos clubes diferentes; estas no se consideran duplicados ya que toda la línea es diferente.

Resumen

En este laboratorio, has aprendido cómo usar el comando sort para organizar varios tipos de datos de estudiantes. Has explorado varias opciones útiles:

  • Ordenamiento alfabético básico
  • Ordenamiento numérico con -n
  • Ordenamiento inverso con -r
  • Ordenamiento por múltiples campos con -k
  • Uso de separadores de campo personalizados con -t
  • Eliminación de duplicados con -u

Otras opciones útiles de sort incluyen:

  • -f: Ignorar mayúsculas y minúsculas al ordenar
  • -b: Ignorar espacios iniciales
  • -c: Verificar si la entrada ya está ordenada
  • -o: Escribir la salida en un archivo en lugar de en la salida estándar

Estas habilidades serán invaluable cuando se gestione y analice datos en diversos contextos profesionales, no solo en entornos educativos.