我有 2 个文本文件:
$ cat /tmp/test1
"AAP" bar
"AEM" bar
"AA" bar
"AEO" bar
"A" bar
$ cat /tmp/test2
"AEM" foo
"AAP" foo
"A" foo
"AEO" foo
"AA" foo
Run Code Online (Sandbox Code Playgroud)
我想对它们进行排序
$ sort /tmp/test1
"AA" bar
"AAP" bar
"A" bar <-- "A" is in position 3
"AEM" bar
"AEO" bar
$ sort /tmp/test2
"AA" foo
"AAP" foo
"AEM" foo
"AEO" foo
"A" foo <-- "A" is in position 5
Run Code Online (Sandbox Code Playgroud)
为什么"A"最终在第 3 个/tmp/test1位置/tmp/test2和第 5 个位置?
我的期望是将比较每列的每个字符。
这样,比较列3时,'A','E'和'"'将彼此进行比较,并且这将是在该测试数据的最终排序顺序的最终决定因素。
显然我的期望是错误的,sort如果不是我期望的方式,那么如何工作?
是否有命令行选项sort或其他一些实用程序可以用来获取我想要的排序顺序?
您需要更改排序规则区域设置。您描述的行为是典型的en_US和许多其他语言环境。修复:
LC_ALL=C sort /tmp/test1
Run Code Online (Sandbox Code Playgroud)
此答案中的更多内容:https : //stackoverflow.com/questions/6531674/linux-sort-unexpected-output
小智 5
可能它只看字母字符?因此,A在下一个字母字符的情况下是b来自栏。