Classifique o arquivo em relação a uma parte de uma coluna

Classifique o arquivo em relação a uma parte de uma coluna

Eu tenho um arquivo que contém detalhes de espaço em armazenamentos de dados. Quero classificá-lo de acordo com o espaço livre disponível neles.

O arquivo é:

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

A saída deve ser semelhante a:

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

Tentei usar sed e awk, mas não consegui encontrar uma solução convincente. Por favor ajude.

Responder1

Se você olhar, man sortdescobrirá que a classificação (GNU) permite especificar o campo pelo qual classificar. Tentar:

sort -n -t: -k4 -r

-nsignifica classificar numericamente em vez de lexicograficamente.

-t:diz para usar :para delimitar (dividir) campos.

-k4diz para usar o quarto campo.

-rdiz para reverter o resultado.


Isso tem a ressalva de não funcionar quando você tem um :no nome do arquivo (o que mudará os campos/colunas). Se isso for um requisito, a maneira mais fácil seria um script (por exemplo, perl ou python).

informação relacionada