我想用以下内容对文件名reportA进行排序
pat_int_parallel_all/项目/测试-v ../../../../../../temin_custom.v-v ../../../../../../tes-y ../../../../../../test_-y .. / .. / .. / ….
不同行为的根本原因 sort 是的价值 LC_COLLATE 。的输出 man 7 locale 说:
sort
LC_COLLATE
man 7 locale
LC_COLLATE 此类别控制用于排序和常规的排序规则 表达式,包括字符等价类和 多字符整理元素。此区域设置类别更改 功能的行为 strcoll(3) 和 strxfrm(3) ,使用 比较本地字母表中的字符串。例如,德国人 sharp s被排序为“ss”。
此类别控制用于排序和常规的排序规则 表达式,包括字符等价类和 多字符整理元素。此区域设置类别更改 功能的行为 strcoll(3) 和 strxfrm(3) ,使用 比较本地字母表中的字符串。例如,德国人 sharp s被排序为“ss”。
strcoll(3)
strxfrm(3)
我(非常快)的分析 sort 源代码 ,是它转换要排序的文本行 strxfrm() 得到一个 比较的基础,使字节 即使它们的字节不同,否则认为相等的字符串在此处被认为是相等的 (原文如此)。
strxfrm()
关于你仍然获得相同输出的事实,正如@Amadan所说,非常奇怪。您确定已正确设置了区域设置吗?你能试试吗? LC_COLLATE="C" sort -ru your_file 。
LC_COLLATE="C" sort -ru your_file