`echo -e 'Q\ns\nV' sort` はソートされません。

`echo -e 'Q\ns\nV' sort` はソートされません。

なぜ:

$ 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

これは、組み合わせ要素が単一文字のロケールにのみ適用されます。

おすすめ記事