Posso usar a ordenação unix para classificar um arquivo em várias chaves de diferentes tipos (mistura de cadeias e números)?

1

Eu tenho um arquivo de texto delimitado de várias colunas, algumas das quais são texto e outras são números. Eu gostaria de classificar em vários campos, que abrangem campos numéricos e de texto. Enquanto -n permite tratar coisas como números, faz coisas estranhas com texto, e omitindo isso resulta em números sendo tratados como texto. Existe uma maneira de associar um campo a um tratamento?

EXEMPLO:

Arquivo de entrada:

Doggy,20
Cat,20
Cat,5
Bird,100
Bat,5

Classificação desejada com base no primeiro campo e depois no segundo:

Bat,5
Bird,100
Cat,5
Cat,20
Doggy,20

Resultado de sort input.txt -t, -k1,1 -k2,2 :

Bat,5
Bird,100
Cat,20
Cat,5
Doggy,20

nota: Cat, 20 precede Cat, 5

Resultado de sort input.txt -t, -n -k1,1 -k2,2 :

Bat,5
Cat,5
Cat,20
Doggy,20
Bird,100

Nota: Bird, 100 é o último

    
por Zugwalt 12.08.2011 / 18:56

1 resposta

4

Anexe o n para tratamento numérico somente aos campos que você deseja classificados como tal. Em seus dados de exemplo, o campo 1 é o texto e o campo 2 é numérico, portanto adicione o n somente à definição do campo 2:

sort input.txt -t, -k1,1 -k2,2n

ou

sort input.txt --field-separator=, --key=1,1 --key=2,2n
    
por 12.08.2011 / 19:12

Tags