2017-09-20 3 views
0

Je pense que la seule différence devrait être quelque chose au sujet de la stabilité. Donc, je pense que si la première clé est différente, -k1 et -k1,1 devraient être les mêmes.différence entre `sort -k1` et` sort -k1,1`

Mais,

$ cat test 
A\ 1 
A 4 
A B 3 

$ cat -A test 
A\^I1$ 
A^I4$ 
A B^I3$ 

$ sort -t$'\t' -k1,1 test 
A 4 
A\ 1 
A B 3 

$ sort -t$'\t' -k1 test # tab is larger than backslash? 
A\ 1 
A 4 
A B 3 

$ sort --version 
sort (GNU coreutils) 8.25 
Copyright (C) 2016 Free Software Foundation, Inc. 
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. 
This is free software: you are free to change and redistribute it. 
There is NO WARRANTY, to the extent permitted by law. 

Written by Mike Haertel and Paul Eggert. 

Existe-t-il des règles quand poignées sort backslash?


J'ai modifié cette question avec un exemple plus simple.

+0

'sort' homme montre' -k, --key = POS1 [, POS2] démarrer une clé à POS1 (origine 1), mettre fin au point de vente (fin par défaut de la ligne) ... ' – shellter

+0

@ shellter je pense '15zd970 \ 1'>' 15zd970 4'. Mais 'sort' sort différemment. – plhn

+0

mettez à jour votre Q avec la sortie de 'sort --version'. Désolé, mais je n'aurai pas le temps de creuser le code source de tri pour déterminer s'il s'agit d'un bug. Bonne chance. – shellter

Répondre

0
$ cat testbar 
A\|1 
A|4 
A B|3 

$ sort -t'|' -k1,1 testbar 
A|4 
A\|1 
A B|3 

$ sort -t'|' -k1 testbar 
A\|1 
A B|3 
A|4 

Comme vous pouvez le voir,
-k1 Option Le sort compare les chaînes par leur longueur premier.

Si vous souhaitez que le sort fonctionne de manière intuitive, utilisez l'option -d.

$ sort -t$'\t' -k1 -d testbar 
A B|3 
A\|1 
A|4 
+0

Hmm, peut-être. Je regarderais les valeurs Ascii du backslash, de l'espace et des caractères de pipe. Je suis content que vous progressiez. Bonne chance! – shellter