Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux LC#U COLLATE的排序顺序设置,以获取';a'<';A'<';b'<';B';_Linux - Fatal编程技术网

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