データは次のとおりです。
D 2
B 2
A 2
このコマンドを実行するとき:
sort -k2,2 file
次のように出力されます。
A 2
B 2
D 2
私の質問は、2番目の列のみを指定したときに-k2,2
最初の列に基づいてソートするのはなぜですか? 2番目の列の値はすべて同じであるため、そのままにしてください。
答え1
これは最後の手段の比較。 2つの行を比較するときにすべてのキーが同じであると比較すると、最後の手段として行全体に対してデフォルトの文字列比較が行われます(-r
まだ適用されますが、他のオプションは適用されません)。この動作は、次のために発生します。POSIX:
-uオプションが指定されていない限り、等価を比較する行は、-d、-f、-i、-n、または-kオプションのない順序でソートする必要があります(ただし、オプションがある場合、-rはまだ有効です。 )。指定)とすべてのバイトの行は比較に重要です。行が等しいか比較される順序は、未指定の順序で記録されます。
GNUの場合は、sort
/-s
オプションを使用して--stable
最後の比較を無効にできます。
¹GNUで使用されるソートアルゴリズムがsort
異なるため安定したがって、最後の比較を無効にすると、安定したソートが行われます。。