Linux LC#U COLLATE的排序顺序设置,以获取';a'<';A'<';b'<';B';
是否有用于获取排序顺序的Linux LC#U COLLATE的排序顺序设置,以获取';a'<';A'<';b'<';B';,linux,Linux,是否有用于获取排序顺序的LC\u COLLATE设置:'a'
LC\u COLLATE
设置:'a'<'a'<'b'
?(参见本文末尾的输出)。注意:'A'<'A'<'B'
也可以。这里有一个例子来说明这个问题
首先,我们在临时文件夹中创建一组空文件,如下所示:
$ mkdir temp
$ cd temp
$ cat ../echo-scr
echo > a-a
echo > a-b
echo > a-A
echo > a-B
echo > B-a
echo > B-b
echo > B-A
echo > B-B
echo > aa-a
echo > aa-A
echo > aA-a
echo > aA-A
echo > Aa-a
echo > Aa-A
echo > AA-a
echo > AA-A
$ bash ../echo-scr
使用设置“LC\u COLLATE=en\u US.utf8”,问题是以'a'
开头的文件被分成两组('a'
不受尊重):
显然,“LC\u COLLATE=C”
将以'a'
开头的文件放在一起,但会产生另一个问题——现在我们得到'a'<'B'
,但我们想要的是'a'<'B'
(以下排序顺序也很好:'a'<'a'<'B'
)
所以问题是:LC\u COLLATE
的什么值应该用来获得以下排序顺序-'a'<'a'<'b'
(下面的示例输出)
请注意,
en_US.UTF-8
的情况是,破折号被忽略。您可以查看sort-t
或其他内容。
$ export LC_COLLATE=en_US.utf8; /bin/ls -1
a-a
a-A
aa-a
aa-A
aA-a
aA-A
Aa-a
Aa-A
AA-a
AA-A
a-b
a-B
B-a
B-A
B-b
B-B
$ export LC_COLLATE=C; /bin/ls -1
AA-A
AA-a
Aa-A
Aa-a
B-A
B-B
B-a
B-b
a-A
a-B
a-a
a-b
aA-A
aA-a
aa-A
aa-a
a-a
a-A
a-b
a-B
aa-a
aa-A
aA-a
aA-A
Aa-a
Aa-A
AA-a
AA-A
B-a
B-A
B-b
B-B