Ordenar comando en Linux con ejemplos
El comando sort se utiliza en sistemas Linux y Unix para organizar el contenido del archivo en un orden específico. Usando el comando de clasificación, ordena líneas, alfabéticamente y numéricas en un archivo.
El comando Ordenar tiene muchas opciones útiles para invertir el orden, ordenar un archivo numéricamente, ordenar una tabla por número de columna, verificar si un archivo ya está ordenado y eliminar los duplicados.
En este tutorial, aprendemos sobre el comando sort en Linux con algunos ejemplos prácticos.
Ordenar comando y su sintaxis
La siguiente línea muestra la sintaxis del comando sort:
sort [options] [files]
Toma la entrada de STDIN por defecto, pero puede ordenar archivos cuando los nombres de archivo se proporcionan como un argumento y también puede ordenar numéricamente.
El comando de clasificación se puede invocar escribiendo solo sort
en la terminal. A continuación, solicitará la entrada de STDIN. Después de ingresar a STDIN, ctrl+d
se ingresa para marcar el final de la entrada.
La siguiente salida muestra que los datos de entrada de STDIN están reorganizados en orden alfabético.
$ sort cappa beta delta theta alpha alpha beta cappa delta theta
Ordenar un archivo
De forma predeterminada, sort trata todos los caracteres como caracteres de cadena. Los caracteres numéricos también se tratan como caracteres.
Primero, creamos un archivo con datos numéricos para ordenar. El siguiente comando crea un archivo ‘numeric.txt’ con datos numéricos:
$ cat > numeric.txt 01 10 25 83 502 111
Ahora, ordenemos el archivo ‘numeric.txt’ de la siguiente manera:
$ sort numeric.txt 01 10 111 25 502 83
El resultado que se muestra arriba no es lo que generalmente esperamos. Por supuesto, 111 es mayor que 25 y 502 también es mayor que 83. Pero si ve de cerca, los números están ordenados en el orden del diccionario.
Por ejemplo, para 111 y 25, compare el primer carácter, 1 precede al 2. Por lo tanto, 111 se coloca antes del 25.
Veamos ahora cómo se clasifica cuando el contenido es alfabetos o palabras. El siguiente archivo ‘wordlist.txt’ contiene palabras que comienzan con mayúsculas y minúsculas y muestra una lista ordenada:
$ sort wordlist.txt Aeroplane ant apple bark born Box Cat tom welcome
Opciones de clasificación
El comando Ordenar viene con opciones bastante buenas para ordenar el contenido del archivo. Analicemos algunos de ellos de la siguiente manera:
clasificar -n
: Para ordenar un archivo numéricamente.
clasificar -u
: Suprime las líneas que repiten una tecla anterior.
clasificar -k
: Ordenar una tabla por número de columna.
clasificar -t
SEP: utilice el separador proporcionado para identificar los campos.
clasificar -M
: Ordene según el mes calendario especificado.
clasificar -b
: Ignora los espacios en blanco al principio de la línea.
clasificar -r
: Clasificación en orden inverso.
clasificar -o
: Salida a un nuevo archivo.
Ordenar archivo numéricamente (opción -n)
Si queremos ordenar el contenido dentro de un archivo numéricamente, usamos -n
opción.
En el siguiente ejemplo, el archivo ‘numeric.txt’ contiene números y los datos se ordenan en orden numérico:
$ sort -n numeric.txt 01 10 25 83 111 502
Para invertir el número en el archivo, usa una combinación de -nr
opción.
Por ejemplo:
$ sort -nr numeric.txt 502 111 83 25 10 01
Ordenar y eliminar líneas duplicadas (opción -u)
Para ordenar y eliminar líneas duplicadas de un archivo, use -u
opción. El primer comando enumerará el contenido del archivo duplicate.txt usando el comando cat y el segundo lo usaremos -u
opción para eliminar líneas duplicadas.
Ejemplo:
$ cat duplicate.txt hello linux lInux Linux raghu world zzz zzz
Salida de muestra donde puede ver que las líneas duplicadas se eliminan del archivo ‘duplicate.txt’:
$ sort -u duplicate.txt hello linux lInux Linux raghu world zzz
Ordenar e ignorar mayúsculas y minúsculas (opción -f)
Como muchas otras herramientas de Linux y Unix, el comando sort distingue entre mayúsculas y minúsculas de forma predeterminada. Pero si necesitamos ignorar el caso, podemos usar -f
o --ignore-case
opción.
Por ejemplo, en ‘duplicate.txt’, hay tres instancias de la palabra ‘linux’ en diferentes casos. Por defecto, todos se imprimen con -u
opción. Significa que no son únicos para el comando de clasificación.
Pero si usamos -f
opción sería ignorada como se muestra a continuación:
$ sort -f -u duplicate.txt hello linux raghu world zzz
Ordenar por columna (opción -k)
El comando sort puede ordenar cualquier tabla usando el número de columna usando -k
opción. Por ejemplo, use ‘-k3’ para ordenar la tercera columna de la tabla.
Consideremos que tenemos una tabla de contenido en el archivo ‘Population.txt’ de la siguiente manera:
$ cat population.txt Kids 500 India Youth 400 England Senior 600 USA Junior 9000 Australia Pensioners 650 China
A continuación, ordenamos la tabla usando la columna número 2 en el archivo Population.txt:
$ sort -k2 population.txt Youth 400 England Kids 500 India Senior 600 USA Pensioners 650 China Junior 9000 Australia
Ordenar varias columnas
En algunas situaciones, es posible que deba ordenar una tabla utilizando varias columnas. Tomemos un ejemplo de un archivo que contiene varias columnas de datos.
Siguiendo el archivo ‘columnas.txt’ contiene varias columnas como se enumeran:
cat columns.txt version1.2 10 25 version1.2 30 50 version1.1 10 30 version1.1 40 50 version1.2 40 50 version1.1 10 20 version1.1 5 8
Ahora marque el comando para ordenar las columnas 1, 2 y 3 en orden numérico.
$ sort -k1,1 -k2,2n -k3,3n columns.txt version1.1 5 8 version1.1 10 20 version1.1 10 30 version1.1 40 50 version1.2 10 25 version1.2 30 50 version1.2 40 50
Ordenar por separador de campo de columna (opción delimitador -t)
De forma predeterminada, el delimitador de las columnas es un espacio en blanco o una tabulación. Pero podemos usar un delimitador personalizado usando -t
o --field-separator
opción en orden.
Tomemos un ejemplo, use dos puntos (:) como delimitador y el archivo ‘/ etc / passwd’ para ordenar.
Si queremos ordenar el archivo / etc / passwd en base a los UID, usamos el siguiente comando:
$ sort -n -t ':' -k3 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin <---output truncated--->
Ordenar por mes (opción -M)
Usando -M
opción que puede ordenar por mes. Si tiene un archivo con meses, ordene el orden de comando por meses.
Por ejemplo, el archivo ‘months.txt’ contiene una lista de nombres de meses.
$ cat months.txt sep august july dec feb may jan
Ahora usaremos la opción -M para ordenar el archivo ‘months.txt’ por mes.
$ sort -M months.txt jan feb may july august sep dec
Ordenar números legibles por humanos (opción -h)
Ordenar puede ordenar numérico legible por humanos como 2K, 5G, 3M usando -ho --human-numeric-sort
opción.
Por ejemplo, debajo de la lista de archivos el número legible por humanos
$ cat human_numeric.txt 4G 2K 3M 1G 34K 52M 200M
Siguiente uso del comando -h
opción para comparar y ordenar números legibles por humanos.
$ sort -h human_numeric.txt 2K 34K 3M 52M 200M 1G 4G
Compruebe la entrada ordenada (opción -c)
El comando sort puede verificar si la entrada ya está ordenada o no está usando -c
opción. Si no está ordenado, devuelve la primera línea no ordenada.
$ sort -c /etc/passwd sort: /etc/passwd:2: disorder: daemon:x:1:1:daemon:/usr/sbin:/bin/sh
No se imprime nada para la entrada ordenada:
$ sort /etc/passwd | sort -c $ echo $? 0
Ordenar con otros comandos
La ordenación es una herramienta de procesamiento de texto, por lo que se puede utilizar canalizando alguna entrada de otro comando.
En el siguiente comando usamos la salida del comando tail como entrada para ordenar:
$ tail /etc/passwd | sort altair:x:1001:1001:Altair Ibn La Ahad,,,,:/home/altair:/bin/bash bind:x:120:132::/var/cache/bind:/bin/false dnsmasq:x:121:65534:dnsmasq,,,:/var/lib/misc:/bin/false mysql:x:115:129:MySQL Server,,,:/nonexistent:/bin/false postfix:x:105:126::/var/spool/postfix:/bin/false raghu:x:1000:1000:raghu,,,:/home/raghu:/bin/bash smmsp:x:119:131:Mail Submission Program,,,:/var/lib/sendmail:/bin/false smmta:x:118:130:Mail Transfer Agent,,,:/var/lib/sendmail:/bin/false sshd:x:117:65534::/var/run/sshd:/usr/sbin/nologin statd:x:116:65534::/var/lib/nfs:/bin/false
La clasificación se puede invertir con la opción -r.
Tomemos otro ejemplo para ordenar la salida del comando du en formato legible por humanos por tamaño, use el siguiente comando:
$ du -h | sort -h
Conclusión
En este tutorial, aprendemos sobre la ordenación de Linux y su opción para ordenar el contenido de los archivos. Espero que haya disfrutado de la lectura y, por favor, comente a continuación si encuentra otros ejemplos.