O que é tipo fazer

2

Este é um seguimento desta questão: O que classifica -n com valores não numéricos?

Aqui está minha entrada:

1-----***
R----****
1---*****

E eu corro:

sort -k 1.2,1.9n input.txt > output.txt

Aqui está minha saída:

1-----***
1---*****
R----****

E minha saída esperada:

1---*****
R----****
1-----***

Espero que esta saída, uma vez que o valor ASCII de * (42) é menor que o valor de - (45). No entanto, parece que o R está sendo considerado no gênero, mas eu pensei que 1.2.1.9 o excluiria. O que estou fazendo errado?

    
por ConditionRacer 30.10.2014 / 21:03

1 resposta

4

Você está usando uma chave inválida para classificação (inválida porque não corresponde ao seu texto de entrada). O manual de informações para classificação sugere o uso da opção --debug para investigar o comportamento do qual a chave está correspondendo. Usando sua chave de comando, 1.2,1.9n , sort produz a seguinte saída:

% sort -k 1.2,1.9n --debug input.txt 
sort: using ‘en_US.UTF-8’ sorting rules
1-----***
 ^ no match for key
_________
1---*****
 ^ no match for key
_________
R----****
 ^ no match for key
_________

e parece estar caindo em uma classificação padrão usando todo o campo. Se você omitir o n da sua chave e usar apenas 1.2,1.9 , obtenha o seguinte:

% sort -k 1.2,1.9 --debug input.txt 
sort: using ‘en_US.UTF-8’ sorting rules
1-----***
 ________
_________
R----****
 ________
_________
1---*****
 ________
_________

que está usando corretamente os caracteres 2 a 9 do primeiro campo para a operação de classificação.

    
por 30.10.2014 / 21:13