Orden de ordenamiento detallado bajo Linux

  
        

1 El principio de funcionamiento de sort

Sort compara cada línea del archivo como una unidad y las compara entre sí. El principio de comparación es comparar los valores del código ASCII desde el primer carácter hasta la parte posterior, y finalmente emitirlos en orden ascendente. .

 [zookeeper @ master rh] $ cat seq.txtbananaapplepearorangepear [zookeeper @ master rh] $ sort seq.txt applebananaorangepearpear 

2 sort -u option -

Su función es muy simple, Es para eliminar líneas duplicadas en la línea de salida.

 [zookeeper @ master rh] $ sort -u seq.txt applebananaorangepear 

pear fue borrado implacablemente por la opción -u.

3 sort -r option

 [zookeeper @ master rh] $ cat number.txt1357112461089 [zookeeper @ master rh] $ sort number.txt --sort El método predeterminado de clasificación es ascendente 1101123456789 [zookeeper @ master rh] $ sort -n number.txt --El clasificador ordena estos números por carácter. El clasificador comparará 1 y 2 primero, obviamente 1 pequeño, así que ponga 10 al frente de 21234567891011 [zookeeper @master rh] $ sort -n -r number.txt --r significa descendente, n significa ordenación por número 1110987654321 

4 tipo de opciones -o

Dado que la clasificación predeterminada da como resultado resultados estándar. Salida, por lo que necesita usar la redirección para escribir el resultado en un archivo, como ordenar nombre de archivo > newfile.

Sin embargo, si desea enviar el resultado de clasificación al archivo original, no puede usar la redirección.

 [zookeeper @ master rh] $ sort -n -r number.txt > number.txt [zookeeper @ master rh] $ cat number.txt [zookeeper @ master rh] $ 

se borra el número . Por lo tanto, necesitamos usar la opción -o, que resuelve este problema con éxito, permitiéndole escribir de forma segura los resultados en el archivo original. Esta también puede ser la única ventaja de -o sobre las redirecciones.

 [zookeeper @ master rh] $ sort -n -r number.txt -o number.txt [zookeeper @ master rh] $ cat number.txt 1110987654321 

5 tipo de opción -t y -k Opciones

 [zookeeper @ master rh] $ cat facebook.txtbanana: 30: 5.5apple: 10: 2.5pear: 90: 2.3orange: 20: 3.4 [zookeeper @ master rh] $ sort -n -k 2 -t: facebook.txtapple: 10: 2.5orange: 20: 3.4banana: 30: 5.5pear: 90: 2.3 

Este archivo tiene tres columnas, las columnas están separadas por dos puntos, y la primera columna indica el tipo de fruta. La segunda columna indica el número de frutas y la tercera columna indica el precio de la fruta. Luego quiero ordenar por el número de frutas, que está ordenada por la segunda columna. ¿Cómo usar la clasificación para lograr? Afortunadamente, ordenar proporciona la opción -t, que puede ir seguida de un espaciador.
(No se recuerda la opción -d de cortar y pegar, resonancia ~~)

Después de especificar el espaciador, puede usar -k para especificar el número de columnas. Utilizamos los dos puntos como espaciador y ordenamos los valores en orden ascendente para la segunda columna, y los resultados son satisfactorios.

6 Otras opciones de uso común

-f convertirá las letras minúsculas en mayúsculas para comparar, es decir, ignorar el caso

-c comprobará si el archivo es Ordenado, si está fuera de servicio, genera la información de la primera fila fuera de orden y finalmente devuelve 1

-C comprobará si el archivo se ha ordenado, si está fuera de servicio, no hay salida, Solo el retorno 1

-M se ordenará por mes, como que JAN es menor que FEB, etc.

-b ignorará todas las partes en blanco antes de cada línea, a partir del primer carácter visible.



Ordenar comando bajo Linux (2)


A veces, al aprender el script, encontrará el comando de clasificación seguido de un grupo de similares Las cosas -k1, 2 o -k1.2 -k3.4 son algo ridículas. Hoy, vamos a arreglarlo y mdash; opción -k!

1 Prepare el material

 [root @ FDMdevBI opt] # cat testsort.txt google 110 5000baidu 100 5000guge 50 3000sohu 100 4500 

El primer dominio es el nombre de la empresa, el segundo dominio Es el número de empresas, y la tercera es el salario promedio de los empleados.
(Además del nombre de la compañía, otras letras, ^ _ ^)

2 Quiero que este archivo sea ordenado alfabéticamente por la compañía, es decir, ordenado por el primer dominio: (este facebook El archivo .txt tiene tres campos)

 [root @ FDMdevBI opt] # sort -t '' -k 1 testsort.txt baidu 100 5000google 110 5000guge 50 3000sohu 100 4500 

Véalo, utilícelo directamente -k 1 configuración está bien.
(De hecho, no es estricto aquí, lo sabrá más adelante)

3 Quiero que facebook.txt esté ordenado por número de empresa

 [root @ FDMdevBI opt] # sort -n -t '' -k 2 testsort.txt guge 50 3000baidu 100 5000sohu 100 4500google 110 5000 

Sin embargo, hay un problema aquí, es decir, la cantidad de empresas en baidu y sohu es la misma, ambas son 100 personas. ¿Qué debo hacer en este momento? De acuerdo con las reglas predeterminadas, el primer orden se ordena en orden ascendente, por lo que baidu se clasifica por delante de sohu.

4 Quiero que facebook.txt se clasifique por número de empresa, y el mismo número de personas se clasifica en orden ascendente según el salario promedio de los empleados:

 [root @ FDMdevBI opt] # sort -n -t '' -k2 -k3 testsort.txt guge 50 3000sohu 100 4500baidu 100 5000google 110 5000 

Mira, agregamos un -k2 -k3 para resolver el problema. Para la caída, la ordenación es compatible con esta configuración, es decir, establece la prioridad de la ordenación del dominio, primero la ordenación por el segundo dominio y, si es la misma, la ordenación por el tercer dominio.
(Si lo desea, siempre puede escribirlo y establecer una gran cantidad de prioridades de clasificación.)

5 Quiero que facebook.txt se clasifique en orden descendente del salario de los empleados. Si el número de empleados es el mismo, ordene por número de empresa en orden ascendente. : (Esto es un poco difícil)

 [root @ FDMdevBI opt] # sort -n -t '' -k3r -k2 testsort.txt baidu 100 5000google 110 5000sohu 100 4500guge 50 3000 

Se usa aquí Algunos consejos, si miras más de cerca, agregaste en secreto una letra r minúscula después de -k 3. Piénsalo, combinado con nuestro artículo anterior, ¿puedes obtener la respuesta? Revelado: el papel de las opciones r y -r es el mismo, es decir, el orden inverso. Dado que la clasificación está ordenada por defecto en orden ascendente, r se agrega aquí para indicar que el tercer campo (salario promedio de los empleados) está ordenado en orden descendente. Aquí también puede agregar n, lo que significa que al ordenar este campo, debe ordenar por valor numérico, por ejemplo:

 [root @ FDMdevBI opt] # sort -t '' -k3rn -k2n testsort.txt baidu 100 5000google 110 5000sohu 100 4500guge 50 3000 

Mire, eliminamos la primera opción -n y la agregamos a cada opción -k.

La sintaxis específica de la opción 6-k

Para continuar profundizando, debes llegar a algún conocimiento teórico. Debe comprender la sintaxis de la opción -k de la siguiente manera:

[FStart [.CStart]] [Modifier] [, [FEnd [.CEnd]] [Modifier]]

Este formato de sintaxis Se puede dividir en dos partes, la parte de inicio y la parte de final por la coma (", ").

Primero inculca un pensamiento en ti, es decir, "Si no configuras la parte final, entonces piensas que el final está configurado al final de la línea". Este concepto es importante, pero a menudo no lo valoras.

La sección Inicio también se compone de tres partes, cuya parte modificadora es la parte de las opciones similares a n y r que dijimos antes. Centrémonos en FStart y C.Start en la sección Inicio.

C.Start también se puede omitir. Si se omite, significa comenzar desde el principio de este campo. El -k 2 y el -k 3 en el ejemplo anterior son ejemplos de omisión de C.Start.

FStart.CStart, donde FStart es el dominio utilizado, y CStart es el primer carácter en el campo FStart desde el primer carácter "

Del mismo modo, en la sección Fin, puede establecer FEnd.CEnd. Si omite .CEnd, significa el final del campo " fin ", el último carácter de este campo. O, si establece CEnd en 0 (cero), también significa terminar en " field end ".

7 El capricho, clasificado a partir de la segunda letra del nombre inglés de la compañía:

Copyright © Conocimiento de Windows All Rights Reserved