Ordenar archivo con respecto a una parte de una columna

Ordenar archivo con respecto a una parte de una columna

Tengo un archivo que contiene los detalles del espacio en los almacenes de datos. Quiero ordenarlo según el espacio libre disponible en ellos.

El archivo es:

Name:VSP-01-32     Capacity:2047   Free Space:144
Name:VSP-02-33     Capacity:2047   Free Space:333
Name:VSP-03-34     Capacity:2047   Free Space:163
Name:VSP-04-35     Capacity:2047   Free Space:110
Name:VSP-05-36     Capacity:2047   Free Space:256
Name:VSP-06-37     Capacity:2047   Free Space:417

La salida debería verse así:

Name:VSP-06-37     Capacity:2047   Free Space:417
Name:VSP-02-33     Capacity:2047   Free Space:333
Name:VSP-05-36     Capacity:2047   Free Space:256
Name:VSP-03-34     Capacity:2047   Free Space:163
Name:VSP-01-32     Capacity:2047   Free Space:144
Name:VSP-04-35     Capacity:2047   Free Space:110

Intenté usar sed y awk, pero no pude encontrar una solución convincente. Por favor ayuda.

Respuesta1

Si observa, man sortencontrará que la clasificación (GNU) le permite especificar el campo por el que ordenar. Intentar:

sort -n -t: -k4 -r

-nsignifica ordenar numéricamente en lugar de lexicográficamente.

-t:le dice que lo use :para delimitar (dividir) campos.

-k4le dice que use el cuarto campo.

-rle dice que invierta el resultado.


Esto tiene la advertencia de no funcionar cuando tienes un :nombre de archivo (lo que cambiará los campos/columnas). Si ese es un requisito, la forma más sencilla de hacerlo sería un script (por ejemplo, Perl o Python).

información relacionada