C以外のロケールに加えて、私の並べ替えを妨げる可能性がありますか?

C以外のロケールに加えて、私の並べ替えを妨げる可能性がありますか?

私はUbuntu 16.04_xfce xenialを使用しています。ただ正しいロケールを設定するだけではありません。、または「自然順序」を使用してオペランドをソートします。

適切なソースファイルをソートしました。すべての行は「#」、「##」、または「deb」で始まります。私はすべての空行、「#」を持つすべての行、そして「##」、最後に「deb」で始まる行を見ると思います。私の出力で約9行、次に25行を見てください。

root@HEJ ~ $ sort /etc/apt/sources.list







## Also, please note that software in backports WILL NOT receive any review
# deb cdrom:[Xubuntu 16.04.1 LTS _Xenial Xerus_ - Release i386 (20160719)]/ xenial main multiverse restricted univer
# deb http://archive.canonical.com/ubuntu xenial partner
deb http://archive.canonical.com/ubuntu/ xenial partner
deb http://mirror.csclub.uwaterloo.ca/debian-multimedia/ stable main
deb http://mirror.csclub.uwaterloo.ca/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirror.csclub.uwaterloo.ca/ubuntu/ xenial main restricted
deb http://mirror.csclub.uwaterloo.ca/ubuntu/ xenial multiverse
deb http://mirror.csclub.uwaterloo.ca/ubuntu/ xenial-security main restricted
deb http://mirror.csclub.uwaterloo.ca/ubuntu/ xenial-security multiverse
deb http://mirror.csclub.uwaterloo.ca/ubuntu/ xenial-security universe
deb http://mirror.csclub.uwaterloo.ca/ubuntu/ xenial universe
deb http://mirror.csclub.uwaterloo.ca/ubuntu/ xenial-updates main restricted
deb http://mirror.csclub.uwaterloo.ca/ubuntu/ xenial-updates multiverse
deb http://mirror.csclub.uwaterloo.ca/ubuntu/ xenial-updates universe
deb http://mirror.cs.pitt.edu/ubuntu/archive xenial-backports main restricted universe multiverse
deb http://mirror.cs.pitt.edu/ubuntu/archive xenial main restricted universe multiverse
deb http://mirror.cs.pitt.edu/ubuntu/archive xenial-updates main restricted universe multiverse
deb http://ppa.launchpad.net/cdemu/ppa/ubuntu xenial main
# deb http://reflection.oss.ou.edu/linuxmint/repos serena main upstream import backport
deb http://security.ubuntu.com/ubuntu/ xenial-security restricted universe multiverse main
deb http://www.4pane.co.uk/ubuntu/ xenial main
# deb-src http://archive.canonical.com/ubuntu xenial partner
# deb-src http://archive.canonical.com/ubuntu/ xenial partner
# deb-src http://mirror.csclub.uwaterloo.ca/debian-multimedia/ stable main
# deb-src http://mirror.csclub.uwaterloo.ca/debian-multimedia/ stable main
# deb-src http://mirror.cs.pitt.edu/ubuntu/archive xenial-backports main restricted universe multiverse
# deb-src http://mirror.cs.pitt.edu/ubuntu/archive xenial main restricted universe multiverse
# deb-src http://mirror.cs.pitt.edu/ubuntu/archive xenial-updates main restricted universe multiverse
# deb-src http://ppa.launchpad.net/cdemu/ppa/ubuntu xenial main
# deb-src http://reflection.oss.ou.edu/linuxmint/repos serena main upstream import backport
# deb-src http://security.ubuntu.com/ubuntu xenial-security main restricted
# deb-src http://security.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse
# deb-src http://security.ubuntu.com/ubuntu xenial-security universe
# deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main restricted
# deb-src http://us.archive.ubuntu.com/ubuntu/ xenial multiverse
# deb-src http://us.archive.ubuntu.com/ubuntu/ xenial universe
# deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-updates main restricted
# deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-updates multiverse
# deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-updates universe
# deb-src http://www.4pane.co.uk/ubuntu/ xenial main
# deb-src http://www.4pane.co.uk/ubuntu/ xenial main
# deb-src http://www.scootersoftware.com/ bcompare4 non-free
## distribution.
## extensively as that contained in the main release, although it includes
## Major bug fix updates produced after the final release of the
## multiverse WILL NOT receive any review or updates from the Ubuntu
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu 
## N.B. software from this repository may not have been tested as
## newer versions of some applications which may provide useful features.
# newer versions of the distribution.
## or updates from the Ubuntu security team.
## 'partner' repository.
## respective vendors as a service to Ubuntu users.
## security team.
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
## team.
## team, and may not be under a free licence. Please satisfy yourself as to
## team, and may not be under a free licence. Please satisfy yourself as to 
## This software is not part of Ubuntu, but is offered by Canonical and the
## Uncomment the following two lines to add software from Canonical's
## universe WILL NOT receive any review or updates from the Ubuntu security
## your rights to use the software. Also, please note that software in
## your rights to use the software. Also, please note that software in 

利用できるロケール:

root@HEJ ~ $ locale
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

調査結果によれば、合理的な結果を得るにはそれ以上LC_COLLATE="en_US.UTF-8"LC_COLLATE="C.UTF-8"またはそれ以上)が必要です。LC_ALL=Cところでここでまた問題が発生します...


ただ文字シーケンスの問題であれば、すべての「#」は一緒に並べ替え、すべての「##」も一緒に並べる必要があります。

しかし、何が起こっているかのように「#」と「##」はソートキーから削除、これが照合順序の機能であるとは信じられません。

私のソートキーに何か問題がありますか?

ソート順について話すとき、特定のロケールの文字バイナリ順序はどこに文書化されていますか?つまり、すべての可能な文字を人が読めるリストに並べ替えていますか?

(en_USロケール定義を上位互換性を持たない人のためのにきび!)

答え1

そのような行動はい純粋にロケールによって制御される照合順序機能ですLC_COLLATE。 Unicodeロケールセットがあるため、glibcは定義されたバリアントの1つで指定されたUnicodeソート順序を使用し、これは多少「自然な」順序を試みます。

この注文はUTS 10 Unicode ソートアルゴリズムとして注文する可変対照要素の交互剪定、および使用(おそらく)基本照合要素表。実際、#他のほとんどの句読点やスペースなどの文字は、次の英数字の間の違いよりも重要ではないと見なされ、接続を切断するためにのみ使用されます。全体のアルゴリズムは、標準である程度詳細に定義され、より複雑になります。

これは時にはおすすめいいえ設定LANGまたはLC_COLLATEこの理由で。代わりにLC_CTYPE(UTF-8の場合)および(優先メッセージング言語の場合)を設定し、LC_MESSAGES照合をPOSIXのデフォルト値のままにすることができます。どちらを選択しても連鎖効果があります。


あなたのシステムでは、これはおそらく定義され/usr/share/i18n/locales/iso14651_t1_commonており、含まれており、iso14651_t1含まれていますen_US。他のロケールの順序は近くのファイルで定義され、通常はローカライズされた変更を含む同じデフォルト値に基づいています(たとえば、sv_SE同じベースを使用しますが、並べ替え...zåäöø、折りたたみvなどw)。このテーブルは選択され、LC_COLLATE実際にシステムの動作を決定し、Unicode標準(以前のバージョン)から派生しました。異なるUnicodeバージョンを使用する最新または古いシステムでは、同じ文字列を異なる方法で比較することができます。

他のエンコーディングにはまったく関係のない独自の別々のテーブルがあります。


UTRに提供されている比較表の文字列を含むファイルをソートして、仕様に基づいてシステムの動作を確認できます。

demark
de‐Luge
death
deluge
☠sad
de-luge
de Luge
☠happy
de‐luge
♡sad
deLuge
de luge
♡happy
de-Luge

(この単語にはハイフンとハイフンのマイナス記号の両方が含まれています。)

受け取る順序は次のとおりです。

death
deluge
de luge
de-luge
de‐luge
deLuge
de Luge
de-Luge
de‐Luge
demark
☠happy
♡happy
☠sad
♡sad

レポートには、この結果の(一部の)説明的な説明があります。

  • 移動する。ハイフン(Hyphen)マイナス記号とハイフンは一つで結ばれたもので、
    文字「l」の大文字と小文字の違いほど、その差が劇的ではありません。
    このグループ化は無視できますが、4番目のレベルの違いは元の基本順序に
    従うため、Unicode順序よりも直感的です。レベル1-3では、☠と♡のシンボルは無視されます。

  • シフトトリム。スペースとハイフンを含む圧縮バージョンの間に「deLuge」がどのように表示されるかを確認してください。レベル1-3では、☠と♡のシンボルは無視されます。

これは少し複雑です。 「レベル1~3」は、アルゴリズムの様々なレベルに対する同点区分重みであり、基本レベル1が最も重要な差別化要素である。これはすでに必要な情報よりも多くの情報である可能性がありますが、少なくとも指定されたソート順が表示された結果を生成したことを確認できます。

答え2

sortあなたのコマンドは、エイリアスまたはシェル関数によって無視される可能性があると思います。

ソートオプションは-d次のとおりです。

-d, --dictionary-order
     consider only blanks and alphanumeric characters

したがって、このオプションを使用すると、初期バージョンと#結果がLC_ALL=C同じであっても無視されます。

関連情報