大文字と小文字を区別するソートの場合、ソートは奇妙に動作します。

大文字と小文字を区別するソートの場合、ソートは奇妙に動作します。

ソートが予期したものとは異なります。このファイルがありますtext.txt。名前を次のように指定してください。

a   1
A   1
a   11

(空間はいつも一つである\t

最初の列でアルファベット順に並べ替えたいです。しかし、私がするとき

sort -k 1 text.txt

私が得るのは、ソートされていないtext.txtファイルだけです。廃止予定の表記法で行うと+ -意味します。

sort +0 -1 text.txt

期待どおりに動作します。つまり、次のような結果が出力されます。

a   1
a   11
A   1

この奇妙な動作は、行が大文字と小文字が異なる場合にのみ発生します。私は何が間違っていましたか?

答え1

終了列も指定する必要があります。

$ sort -k1,1 text.txt
a       1
a       11
A       1

引用するGNUソートマニュアルページ:

   -k, --key=POS1[,POS2]
          start a key at POS1 (origin 1), end it at POS2 (default  end  of
          line)

答え2

バグが発生したはずですsort!ファイルにスペースがないと正しくソートできません。

$ cat aaa
a1
A1
a11

$ sort aaa
a1
A1
a11

$ sort -k1,1 aaa
a1
A1
a11

これは次のことによってより明らかになります。

$ cat bbb
A B b 0
a B b 0
A b b 1

$ sort bbb
a B b 0
A B b 0
A b b 1

$ sort -k1,2 bbb
a B b 0
A b b 1
A B b 0

関連情報