• Blog
  • Cursos de Linux en Udemy
  • Certificaciones LPIC
  • Servidor de Discord
  • Contacto
Antonio Sánchez CorbalánAntonio Sánchez Corbalán
  • Blog
  • Cursos de Linux en Udemy
  • Certificaciones LPIC
  • Servidor de Discord
  • Contacto

¿Quieres aprender Linux?

¡Mira los mejores cursos de Linux!
  • Inicio
  • Blog
  • Linux
  • Ordenar con el comando sort

Ordenar con el comando sort

  • Categorías Linux
  • Fecha marzo 11, 2021

En este post vamos explicar el comando sort, que nos servirá para ordenar líneas de texto de diferentes formas.

Contenidos

  • Ordenar alfabéticamente
  • Ordenar numéricamente
  • Ordenar por tamaño
  • Ordenar por un campo diferente del primero
  • Ejemplos del comando sort en Linux
    • Ampliar conocimientos
    • Video sobre el comando sort para ordenar en Linux

Ordenar alfabéticamente

Si ejecutamos el comando sin ninguna opción, realizará una ordenación basada en los caracteres de texto por los que empieza la línea.

Por ejemplo, si ejecutamos sort /etc/passwd veremos que ordena las líneas en función del nombre de usuario, que es la palabra que se encuentra al inicio. Si queremos que la ordenación sea de manera inversa, de la Z a la A, utilizaremos la opción -r

Ordenar numéricamente

En algunas ocasiones necesitamos que la ordenación no interprete los caracteres como simples letras, si no que sepa interpretar números o magnitudes. Supongamos por ejemplo que tenemos un fichero con lo que ocupan los directorios del sistema. Si hacemos una ordenación con sort size_bytes vemos que primero pone todos los que empiezan por 0, luego todos los que empiezan por 1 etc… pero no es una ordenación basada en el numero entero, si no que ordena por el primer carácter, luego por el segundo, etc…

La opción -n nos permite interpretar los números correctamente, de tal forma que si hacemos sort -n size_bytes ya nos aparecerá ordenado correctamente.

Ordenar por tamaño

Otro caso que se nos podría presentar es que el listado no estuviera en bytes porque son más difíciles de interpretar, sino que estuviera expresado en magnitudes más comprensibles, por ejemplo en k’s, megas, gigas etc…

Si intentamos hacer un sort -n size_h vemos que se basa en el número, pero no tiene en cuenta la letra que hay después. Para indicarle que las cifras están expresadas en modo “humano”, le indicamos la opción -h. Así, sort -h size_h sí nos hará una ordenación correcta.

Ordenar por un campo diferente del primero

El comando sort por defecto siempre comenzará a ordenar por los primeros caracteres de cada linea, pero puede que necesitemos ordenar por un campo (o columna) distinto al primero. Para eso utilizaremos la opción -k seguido por el número de columna a ordenar. Si tenemos un fichero con nombres de clientes, por ejemplo:

cat datos.csv

Darryl	Montoya
Hakeem	Sloan
Edan	Noel
Hanae	Finch
Nevada	Weaver
Kellie	Kirby
Aaron	Cummings
Rachel	Barnett
Ria	Stuart

Si hacemos sort datos.csv tendremos:

Aaron	Cummings
Darryl	Montoya
Edan	Noel
Hakeem	Sloan
Hanae	Finch
Kellie	Kirby
Nevada	Weaver
Rachel	Barnett
Ria	Stuart

Pero podemos ordenar por apellidos con sort -k 2 datos.csv tendremos:

Rachel	Barnett
Aaron	Cummings
Hanae	Finch
Kellie	Kirby
Darryl	Montoya
Edan	Noel
Hakeem	Sloan
Ria	Stuart
Nevada	Weaver

Ejemplos del comando sort en Linux

Vamos a generar un fichero llamado espacio_logs como root con dos instrucciones:

cd /var/log/
wc *.log > info_logs

Esto nos crea un fichero con las lineas, palabras y caracteres que tiene un fichero de texto. Si hay algún comando que no reconozcas te recomiendo repasar la entrada con los 50 mejores comandos de Linux.

El resultado es (varía según el sistema, este es un ejemplo): cat info_logs

     0      0      0 alternatives.log
    15    200   1597 auth.log
   698   4691  48350 boot.log
   481   6280  49578 daemon.log
     0      0      0 dpkg.log
    89    611   6324 fontconfig.log
    28    463   3196 kern.log
   610   9371  85621 user.log
     1      0      1 vboxadd-install.log
     3     20    149 vboxadd-setup.log
     1      0      1 vboxadd-uninstall.log
   398   3528  25423 Xorg.0.log
   344   3104  22689 Xorg.1.log
  2668  28268 242929 total

Veamos ahora los resultados de distintas ordenaciones.

Ordenar por cantidad de lineas (primera columna, numérica) sort -n info_logs

     0      0      0 alternatives.log
     0      0      0 dpkg.log
     1      0      1 vboxadd-install.log
     1      0      1 vboxadd-uninstall.log
     3     20    149 vboxadd-setup.log
    15    200   1597 auth.log
    28    463   3196 kern.log
    89    611   6324 fontconfig.log
   344   3104  22689 Xorg.1.log
   398   3528  25423 Xorg.0.log
   481   6280  49578 daemon.log
   610   9371  85621 user.log
   698   4691  48350 boot.log
  2668  28268 242929 total

Ordenar por nombre de archivo de forma inversa sort -k 4 -r info_logs

   344   3104  22689 Xorg.1.log
   398   3528  25423 Xorg.0.log
     1      0      1 vboxadd-uninstall.log
     3     20    149 vboxadd-setup.log
     1      0      1 vboxadd-install.log
   610   9371  85621 user.log
  2668  28268 242929 total
    28    463   3196 kern.log
    89    611   6324 fontconfig.log
     0      0      0 dpkg.log
   481   6280  49578 daemon.log
   698   4691  48350 boot.log
    15    200   1597 auth.log
     0      0      0 alternatives.log

Ampliar conocimientos

En la propia wikipedia puedes obtener más información sobre este comando. También en el mejor canal de youtube sobre Linux 😉

Video sobre el comando sort para ordenar en Linux


Si quieres ampliar tus conocimientos de Linux te podrían interesar los siguientes cursos:

CERTIFICACIÓN LPIC-1: ADMINISTRADOR DE LINUX.
Gran curso para cualquier SysAdmin Linux. Y si te interesa la certificación LPIC, no encontrarás un curso mejor para aprobar el examen.
👉🏼  ¡Más de 300 videos! con más de 50 horas de contenido de calidad. Incluye ejercicios, prácticas y simulacros de Examen.
MAS INFORMACIÓN
Comandos de Linux: desde cero hasta programar Shell Script
Aprende a usar el terminal de Linux como un verdadero profesional. Desde lo más básico hasta Shell Scripting en Bash
ENTRA CON EL MÁXIMO DESCUENTO

  • Compartir:
A. Sánchez Corbalán
    Profesor de vocación. Desde hace más de 15 años imparto clases de informática a todo tipo de alumnado. También he trabajado como desarrollador web y administrador de sistemas Linux. Soy socio fundador de dos empresas tecnológicas que me ayudan a seguir evolucionando.

    Publicación anterior

    Instalar servidor LDAP en Debian 8
    marzo 11, 2021

    Siguiente publicación

    Colorear la salida de cat en Debian
    agosto 9, 2021

    Categorías

    • Linux
    • Shell Script
    • Soluciones
    • Tutoriales

    Todos los derechos reservados.

    • Contacto
    sanchezcorbalan.es utiliza cookies para mejorar la experiencia de los usuarios, facilitando la navegación por nuestra web. Para saber más sobre el uso que hacemos de las cookies, consulta nuestra Política sobre el uso de cookies.Aceptar
    Privacy & Cookies Policy

    Privacy Overview

    This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are as essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
    Necesarias Siempre activado

    Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.