なぜ:
$ echo -e 'Q\ns\nV' | sort
出力
Q
s
V
私のリストの順序を変更せずに(小文字/大文字を考慮しますか?)
ベストアンサー1
ほとんどの言語では、s
大文字と小文字に関係なく、すべてが最初にソートされます。V
ソートは、ローカライズ設定(LANG
およびLC_*
変数)によって異なります。
LC_ALL=C sort
バイト値の順序に基づいてソートするには、次を使用できます。ただし、マルチバイトロケールにある場合は、要件を満たしていない可能性があります。
言語順に並べ替えたいのですが、大文字が小文字より前の場合は、次のようにできます。
sed 's/./0&/g;s/0\([[:lower:]]\)/1\1/g' |
sort |
sed 's/.\(.\)/\1/g'
これにより、小文字が他のすべての文字の後にソートされます。
$ print -l Q s d é f D É F V | sort
d
D
é
É
f
F
Q
s
V
$ print -l Q s d é f D É F V | sed 's/./0&/g;s/0\([[:lower:]]\)/1\1/g' |
sort |
sed 's/.\(.\)/\1/g'
D
É
F
Q
V
d
é
f
s
これは、組み合わせ要素が単一文字のロケールにのみ適用されます。