GNU/Linux >> Tutoriales Linux >  >> Linux

Ordenar comando en Linux con ejemplos

El comando ordenar se utiliza en los sistemas Linux y Unix para organizar el contenido del archivo en un orden específico. Al usar el comando ordenar, ordena las líneas, el alfabeto y el número 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 ordenar en Linux con algunos ejemplos prácticos.

Comando Ordenar y su sintaxis

La siguiente línea muestra la sintaxis del comando de clasificación:

sort [options] [files]

Toma la entrada de STDIN de forma predeterminada, pero puede ordenar archivos cuando los nombres de archivo se proporcionan como argumento y también puede ordenarlos numéricamente.

El comando Ordenar se puede invocar escribiendo simplemente sort en la terminal Luego solicitará la entrada de STDIN. Después de ingresar STDIN, ctrl+d se ingresa para marcar el final de la entrada.

El siguiente resultado 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, ordenar 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 miras 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 a 2. Por lo tanto, 111 se coloca antes de 25.

Ahora veamos cómo se ordena 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 de los archivos. Analicemos algunos de ellos de la siguiente manera:

ordenar -n :Para ordenar un archivo numéricamente.
ordenar -u :suprime las líneas que repiten una clave anterior.
ordenar -k :Ordenar una tabla por número de columna.
ordenar -t SEP:utilice el separador proporcionado para identificar los campos.
ordenar -M :Ordenar según el mes calendario especificado.
ordenar -b :Ignora los espacios en blanco al comienzo de la línea.
ordenar -r :Clasificación en orden inverso.
ordenar -o :Salida a un archivo nuevo.

Ordenar el archivo numéricamente (Opción -n)

Si queremos ordenar los contenidos 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 clasifican 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 listará el contenido del archivo duplicate.txt usando el comando cat y el segundo usará -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)

Al igual que 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 el 'duplicado.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 ordenació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 ordenar 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 usando varias columnas. Tomemos un ejemplo de un archivo que contiene varias columnas de datos.

Siguiendo el archivo 'columns.txt' contiene varias columnas como se indica:

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 (delimitador -t Opción)

De forma predeterminada, el delimitador de las columnas es un espacio en blanco o un tabulador. Pero podemos usar un delimitador personalizado usando -t o --field-separator opción en ordenación.

Tomemos un ejemplo, use dos puntos (:) como delimitador y el archivo '/etc/passwd' para ordenar.

Si queremos ordenar el archivo /etc/passwd según 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 los comandos por meses.

Por ejemplo, el archivo 'meses.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)

Sort puede ordenar números legibles por humanos como 2K, 5G, 3M usando -h o --human-numeric-sort opción.

Por ejemplo, debajo de la lista de archivos número legible por humanos

$ cat human_numeric.txt
4G
2K
3M
1G
34K
52M
200M

Siguiendo el comando use -h opción para comparar y ordenar números legibles por humanos.

$ sort -h human_numeric.txt
2K
34K
3M
52M
200M
1G
4G

Comprobar la entrada ordenada (opción -c)

El comando ordenar puede verificar si la entrada ya está ordenada o no usando -c opción. Si no está ordenado, devuelve la primera línea sin ordenar.

$ 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 usar 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 clasificación de Linux y su opción para ordenar el contenido de los archivos. Espero que hayas disfrutado de la lectura y comenta a continuación si encuentras otros ejemplos.


Linux
  1. Comando wc Linux con ejemplos

  2. Comando JQ en Linux con ejemplos

  3. Ejemplos de comandos ln en Linux

  4. Ejemplos de comandos de archivo en Linux

  5. ordenar ejemplos de comandos en Linux

Comando WC de Linux con ejemplos

Ordenar comando en Linux con ejemplos

Uso del comando Linux mv con ejemplos

Comando de montaje de Linux con ejemplos

Comando gawk de Linux con ejemplos

Comando make de Linux con ejemplos