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

1

Eu tenho um arquivo que contém os detalhes do espaço em armazenamentos de dados. Eu 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 se parecer com:

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

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

    
por SysAdmin 05.03.2014 / 12:59

1 resposta

3

Se você olhar para man sort , verá que a classificação (GNU) permite que você especifique o campo para classificar. Experimente:

sort -n -t: -k4 -r

-n significa classificar numericamente em vez de lexicograficamente.

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

-k4 diz para usar o quarto campo.

-r diz para reverter o resultado.

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

    
por 05.03.2014 / 13:20

Tags