2017-09-20 13 views
0

私は唯一の違いは安定性に関するものでなければならないと思います。`sort -k1`と` sort -k1,1`の違い

だから私は、最初のキーが異なる場合、-k1-k1,1は同じであるべきだと思います。

しかし、sortは、バックスラッシュを処理するとき

$ 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. 

は、任意のルールはありますか?


この質問をより簡単な例で修正しました。

+0

は '男sort'は' -k、--key = POS1示し[、POS2]、POS1(原点1)でキーを開始するPOS(ラインのデフォルトの終わり)でそれを終わらせる... ' – shellter

+0

@私は '15zd970 \ 1'>' 15zd970 4'と思っています。しかし、「並べ替え」の出力は異なっています。 – plhn

+0

あなたのQを 'sort --version'の出力で更新してください。申し訳ありませんが、これはバグかどうかを判断するソートのソースコードを掘り下げる時間はありません。がんばろう。 – shellter

答えて

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 

あなたが見ることができるように、
-k1オプションはsortその長さ最初で文字列を比較します。

sortを直感的に動作させたい場合は、-dオプションを使用してください。

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

まあ、多分。私はバックスラッシュ、スペース、パイプ文字のAscii値を調べます。あなたが進歩してうれしいです。がんばろう! – shellter