Linuxのデフォルトのソート順序は何ですか?

Linuxのデフォルトのソート順序は何ですか?

長い間、私はプログラムの基本的な動作がsortASCIIシーケンスを使用することだと思いました。ただし、パラメータなしで次の行を入力すると、次のようになります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」の場合、未定義の動作が発生します。

答え2

言ったように、man sort「辞書順」は「スペースと英数字のみが考慮されます」を意味します。たとえば、与えられたデータ

The
!quick
brown
@fox
jumps
#over
17
$lazy
  dogs
%42
times.

簡単なsortコマンド生成

  dogs
!quick
#over
$lazy
%42
@fox
17
brown
jumps
The
times.

(スペース文字で始まる行と、文字と数字で始まる行の前に、、、、!記号1配置します。#$%@英数字)、しかしsort -d生産

  dogs
17
%42
brown
@fox
jumps
$lazy
#over
!quick
The
times.

  dogs空白で始まるため、まだ最初のものですが、特殊(句読点)文字は無視されます。と17の間には、通常、前の文字に移動する文字が前に続きます。 ____________ 1ASCII値の順序: スペース=040、=041、=043、=044、=045、および=0100。一部のキーボードでは、おおよそ左から右の順序であることに注意してください(スペースバーを無視)。42foxbrownjumps42fox17

!#$%@

答え3

ソート順を決定するには、各行に異なる文字を使用してファイルを作成してソートするだけです。結果の出力はソート順を示します。

関連情報