
私は postgres でのソートの解決策を探していますが、それは照合の問題であるように思われるので、代わりに標準の Unix ソート コマンドについて質問します。
以下のデータがあります:
A_A1
A\A2
A_A2
A\A1
ソートすると次のようになります:
cat test.txt |sort
A_A1
A\A1
A_A2
A\A2
でも私はしたい:
A_A1
A_A2
A\A1
A\A2
私も試してみましたLANG=C cat...
が、うまくいきませんでした。それでは、どの照合ルールを使用すれば特殊文字を無視しないことができるのでしょうか?
答え1
からman sort
:
Set LC_ALL=C to get the traditional sort order that uses native byte values.
それで:
$ LC_ALL=C sort test.txt
A\A1
A\A2
A_A1
A_A2
したがって、C ロケールはバイト値の後にソートします。
あなたがする必要があるのは
$ cat test.txt | LC_ALL=C sort
このようにパイプしたい場合(ただし、ファイル名バージョンが利用可能な場合は常に直接使用するようにしてください)。
これに影響を与える主な環境変数は ですLC_COLLATE
。LC_ALL
が設定されている場合は、すべての特定のLC_
値よりも優先されます。 も も設定されていない場合はLC_ALL
にLC_COLLATE
フォールバックしますLANG
。それ設定されていない場合は、デフォルトで locale になりますC
。