Sysadmin Toolkit: Cómo usar el comando Ordenar para procesar texto en Linux

el sort El comando se usa en Linux para imprimir la salida de un archivo en un orden dado. Este comando procesa sus datos (el contenido del archivo o la salida de cualquier comando) y los reorganiza según lo especificado, lo que nos ayuda a leer los datos de manera eficiente. Es muy útil en los casos en que se dispone de grandes cantidades de información y es necesario ordenarlas en orden alfabético o numérico ascendente o descendente.

En la clasificación alfabética, el comando verifica la primera letra de cada fila y mueve las filas hacia arriba o hacia abajo para organizar cada fila alfabéticamente.

En la clasificación numérica, el comando verifica los números en cada fila y organiza las filas en orden ascendente o descendente. Esta organización muestra un número más pequeño en la parte superior de su salida. Hay muy poca diferencia en sort y grep pedido. el sort El comando ordena los datos alfabética o numéricamente en orden ascendente o descendente. el grep El comando muestra u oculta solo la información requerida que desea.

En breve, sort es un comando útil cuando necesita leer un archivo grande o una lista que no está organizada correctamente, y se vuelve difícil y requiere mucho tiempo para leer estos archivos. Para resolver este problema, utilice el sort Comando en Linux para organizar el contenido de archivos o listas en el formato requerido, lo que puede ayudar a leer el contenido requerido. el sort El comando asume que los datos están en formato ASCII. Hay opciones útiles para sort que puede cambiar el comportamiento de la salida. Algunos de los ejemplos se dan a continuación, junto con la sintaxis del comando.

Índice

Sintaxis

sort [OPTION]... [FILE]...

sort [OPTION]... --files0-from=F

Ejemplos

En el primer ejemplo, usamos el sort Comando sin ninguna opción. Esto organiza cada fila en orden alfabético considerando la primera letra de cada fila. Nota: Las líneas que comienzan con una letra minúscula aparecen antes que las líneas que comienzan con una letra mayúscula. Entonces B (minúsculas) va primero, y B (mayúsculas) está en segunda posición.

$ cat test.txt

Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Budhha
ChatrapatiShahuMaharaj
budhha
Ramaai
$ sort test.txt

budhha
Budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai

A veces necesitamos datos en orden inverso, es decir, opuesto al orden alfabético. Esto se logra utilizando el -r opción, como se ve a continuación:

$ sort test.txt

budhha
Budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
$ sort -r test.txt

Ramaai
MahatmaJyotibaPhule
Dr.B.R.Ambedkar
ChatrapatiShahuMaharaj
Budhha
budhha

Al igual que clasificar letras, podemos sort también digitalmente. Opción -n organiza lo digital e invierte sus resultados usando -r opción. A continuación, utilizando el -n opción, hemos ordenado los números en orden ascendente. Por lo tanto, el número más pequeño está arriba y el número más grande está abajo. También podemos invertir la salida usando la misma opción anterior -r con -n y mostrar el número más grande en la parte superior.

$ cat numeric.txt

14
04
34
1891
938
378
2356
$ sort -n numeric.txt

04
14
34
378
938
1891
2356
$ sort -nr numeric.txt

2356
1891
938
378
34
14
04

Puedes sort la columna específica también. EN sort una columna en particular, use el -k opción con un número de columna. Tenga en cuenta que en el siguiente ejemplo solo hemos utilizado el -k opción para seleccionar la columna, por lo que el sort El comando organiza los datos considerando el primer dígito de la segunda columna, no el número entero de la segunda columna. Así, la línea que contiene el número 278 se muestra antes de la línea que contiene el número 28. Si usamos el -n opción con -k (para la selección de columnas) los datos se muestran en orden ascendente y la secuencia va del número más pequeño al más grande (que se cubrió en el segundo ejemplo):

$ cat file2.txt

Advika 1
Amit 30
Ajit 28
Abhi 278
Chirag 2
$ sort -k 2 file2.txt

Advika 1
Chirag 2
Abhi 278
Ajit 28
Amit 30

Aquí estamos usando el número de columna y el ordenamiento numérico juntos. En el siguiente ejemplo, clasificamos la quinta columna numéricamente en orden ascendente.

$ ls -l

total 0
-rw-r--r-- 1 amwaghma hpcapp 42 Aug 20 19:30 file2.txt
-rw-r--r-- 1 amwaghma hpcapp 31 Aug 20 19:51 months.txt
-rw-r--r-- 1 amwaghma hpcapp 27 Aug 20 19:20 numeric.txt
-rw-r--r-- 1 amwaghma hpcapp 73 Aug 20 19:49 test.txt
$ ls -l | sort -nk 5

total 0
-rw-r--r-- 1 amwaghma hpcapp 27 Aug 20 19:20 numeric.txt
-rw-r--r-- 1 amwaghma hpcapp 31 Aug 20 19:51 months.txt
-rw-r--r-- 1 amwaghma hpcapp 42 Aug 20 19:30 file2.txt
-rw-r--r-- 1 amwaghma hpcapp 73 Aug 20 19:49 test.txt

A menudo hay muchas entradas duplicadas en algunas filas. Estos pueden ser eliminados usando el -u opción. En el siguiente ejemplo mostramos el comportamiento de la -u opción para eliminar entradas duplicadas:

$ cat test.txt

Dr.B.R.Ambedkar
MahatmaJyotibaPhule
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
budhha
Ramaai
Dr.B.R.Ambedkar
$ sort test.txt

budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
$ sort -u test.txt

budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai

Hay una opción interesante por la que podemos comprobar si el archivo está ordenado o no. Utilizando el -c opción, la sort El comando informa que se movió la primera fila. Si el archivo existente ya está ordenado, entonces sort no da salida. Comprueba cada fila una tras otra y cuando encuentra una fila desordenada, envía un mensaje. En el siguiente ejemplo, el -c opción de sort El comando comprueba cada línea. En el primer intento, compara la primera letra de las dos primeras líneas, que encuentra correctas, es decir, la letra D y letra METRO se enumeran en orden alfabético. En el segundo intento, examina la primera letra de la tercera fila con la letra inicial de las dos primeras filas y encuentra que la tercera fila no está ordenada alfabéticamente. Por lo tanto, imprime la primera línea del archivo que no coincide con el número de línea.

$ cat test.txt

Dr.B.R.Ambedkar
MahatmaJyotibaPhule
ChatrapatiShahuMaharaj
budhha
Ramaai
$ sort test.txt

budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
$ sort -c test.txt

sort: test.txt:3: disorder: ChatrapatiShahuMaharaj

Al igual que los datos o los arreglos digitales, también podemos organizar los meses en el archivo. Para hacer esto, use el -M opción e invierta el orden usando el -r opción.

$ cat months.txt

February
December
January
July
$ sort -M months.txt

January
February
July
December
$ sort -Mr months.txt

December
July
February
January

También podemos ordenar varios archivos simultáneamente usando los respectivos nombres de archivo como argumentos separados por un espacio. La salida se imprime una tras otra. A continuación he utilizado el -n opción para ordenar el segundo archivo digital.

$ cat test.txt numeric.txt

Dr.B.R.Ambedkar
MahatmaJyotibaPhule
ChatrapatiShahuMaharaj
budhha
Ramaai
14
04
34
1891
938
378
2356
$ sort test.txt -n numeric.txt

budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
04
14
34
378
938
1891
2356

También puede redirigir la salida ordenada a otro archivo usando el -o opción:

$ sort test.txt > sortfile

OR

$ sort -o sortfile test.txt

$ cat sortfile

budhha
Budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai

Conclusión

Usando las opciones anteriores, vemos que la clasificación se puede hacer con el contenido del archivo o la salida de cualquier comando. Facilita la organización de grandes conjuntos de datos en orden ascendente o descendente. Hay tantas opciones que podemos usar para reorganizar los datos de cualquier manera que podamos. Lo más sorprendente es que no hemos realizado ningún cambio en el archivo original. Por lo tanto, nuestros datos están seguros.

Artículos de interés

Subir