長い間、私はプログラムの基本的な動作がsort
ASCIIシーケンスを使用することだと思いました。ただし、パラメータなしで次の行を入力すると、次のようになりますsort
。
#
@
私は持っています:
@
#
しかし、ASCIIテーブルによると#
35と64です@
。他の例:
A
a
出力は次のとおりです
a
A
誰でもこれを説明できますか?しかし、これを使用するときの「事前順序」とは何ですかsort -d
?
ベストアンサー1
POSIXではなくロケールを使用しているようです。
努力する:
export LC_ALL=C
それからsort
。
info sort
確かに:
(1)POSIX以外のロケールを使用している場合(例:「LC_ALL」を「en_US」に設定)、「sort」は使い慣れたソートとは異なる出力を生成できます。この場合、「LC_ALL」環境変数を「C」に設定してください。 「LC_COLLATE」の設定には2つの問題があります。まず、「LC_ALL」も設定されていると効果はありません。次に、「LC_CTYPE」(または「LC_CTYPE」が設定されていない場合は「LANG」)が互換性のない値に設定されている場合、未定義の動作を持ちます。たとえば、「LC_CTYPE」が「ja_JP.PCK」であるが「LC_COLLATE」が「en_US.UTF-8」の場合、未定義の動作が発生します。