非 POSIX ロケールを使用しているようです。
試してみてください:
export LC_ALL=C
そして sort
.
info sort
明確に言う:
(1) 非 POSIX ロケールを使用する場合 (例えば、`LC_ALL' を `en_US' に設定することにより)、`sort' は、慣れ親しんでいるものとは異なる方法でソートされた出力を生成する可能性があります。その場合、`LC_ALL' 環境変数を `C' に設定します。 `LC_COLLATE' だけを設定すると 2 つの問題があることに注意してください。まず、`LC_ALL' も設定されていると効果がありません。第 2 に、`LC_CTYPE' (または、`LC_CTYPE' が設定されていない場合は `LANG') が互換性のない値に設定されている場合、動作は未定義です。たとえば、`LC_CTYPE' が `ja_JP.PCK' であるのに、`LC_COLLATE' が `en_US.UTF-8' である場合、未定義の動作が発生します。
man sort
として 「dictionary-order」は「空白と英数字のみを考慮する」ことを意味します。たとえば、与えられたデータ
The
!quick
brown
@fox
jumps
#over
17
$lazy
dogs
%42
times.
飾らない sort
コマンドが生成します
dogs
!quick
#over
$lazy
%42
@fox
17
brown
jumps
The
times.
(スペース文字と !
で始まる行を入れる 、 #
、 $
、 %
、および @
文字と数字で始まる行の前の記号、つまり、英数字 )、しかし sort -d
生産
dogs
17
%42
brown
@fox
jumps
$lazy
#over
!quick
The
times.
dogs
スペースで始まっているため、まだ最初ですが、特殊 (句読点) 文字は無視されます。 17
42
の前に来る 、および fox
brown
の間にある そして jumps
、 42
という事実にもかかわらず と fox
通常は 17
の前に移動する文字を前に置く .
____________
ASCII 値の順:スペース=040、!
=041, #
=043, $
=044, %
=045、および @
=0100。 (スペースバーを無視して)これは、一部のキーボードではほぼ左から右の順序であることに注意してください。
並べ替え順序を決定するには、各行に異なる文字を使用してファイルを作成し、それを並べ替えるだけです。結果の出力は、ソート順を示します。