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 sort
encontrará que la clasificación (GNU) le permite especificar el campo por el que ordenar. Intentar:
sort -n -t: -k4 -r
-n
significa ordenar numéricamente en lugar de lexicográficamente.
-t:
le dice que lo use :
para delimitar (dividir) campos.
-k4
le dice que use el cuarto campo.
-r
le 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).