2011-06-14 20 views
15

que estoy tratando de ordenar el archivo a continuación de la siguiente manera:UNIX tipo múltiples campos

col1 (ascendente) col2 (descendente) col3 (ascendente) col4 (descendente)

Quiero usar el comando -k , no la sintaxis +-. que he descubierto cómo utilizar la sintaxis de edad:

sort -t " " +0 -1 +2 -3 +4r testfile 

pero es casi intuitivo. No he descubierto la manera correcta de usar la opción -k. Gracias.

Aquí está la testfile:

5 3 2 9 
3 4 1 7 
5 2 3 1 
6 1 3 6 
1 2 4 5 
3 1 2 3 
5 2 2 3 

Resultado:

1 2 4 5 
3 4 1 7 
3 1 2 3 
5 3 2 9 
5 2 2 3 
5 2 3 1 
6 1 3 6 
+0

Sus datos "resultado" no coincide con la salida de su ejemplo de sintaxis de edad. – blahdiblah

Respuesta

26

necesita uno de:

sort --key=1,1 --key=2,2r --key=3,3 --key=4,4r 
sort -k1,1 -k2,2r -k3,3 -k4,4r 

como en el siguiente transcripción:

pax$ echo '5 3 2 9 
3 4 1 7 
5 2 3 1 
6 1 3 6 
1 2 4 5 
3 1 2 3 
5 2 2 3' | sort --key=1,1 --key=2,2r --key=3,3 --key=4,4r 

1 2 4 5 
3 4 1 7 
3 1 2 3 
5 3 2 9 
5 2 2 3 
5 2 3 1 
6 1 3 6 

deje de dar la opción -n si desea que los trataron como números adecuados (longitud variable), tales como:

sort -n -k1,1 -k2,2r -k3,3 -k4,4r 
0

¿Qué hay de sort -n -k 1n -k 2rn -k 3n -k 4rn?
-k <FIELD><OPT1><OPT2>... donde OPT1 y opt2 son simplemente sort opciones, por ejemplo n son numéricas, r es revertir

Cuestiones relacionadas