LINUX

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.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar