Linux 在sort命令中处理空格。LC“U COLLATE=c和LC“U COLLATE=”之间的差异;en“美国UTF-8”;
我试图在Linux 在sort命令中处理空格。LC“U COLLATE=c和LC“U COLLATE=”之间的差异;en“美国UTF-8”;,linux,shell,sorting,unix,Linux,Shell,Sorting,Unix,我试图在sort命令的手册页中查找此内容,但找不到任何内容。 因此,考虑下面的文本文件 T.TXT < /C> >: 11 1 0 (t.txt的二进制表示形式 $ xxd -p t.txt 2031310a3120300a ) 在此文件上使用LC\u COLLATE=“en\u US.UTF-8”和sort可提供: $ LC_COLLATE="en_US.UTF-8" sort t.txt 1 0 11 如果我们检查文件中的第二个字符位置(或列),我们会发现第一个字符 行有一个空格
sort
命令的手册页中查找此内容,但找不到任何内容。
因此,考虑下面的文本文件<代码> T.TXT < /C> >:
11
1 0
(t.txt的二进制表示形式
$ xxd -p t.txt
2031310a3120300a
)
在此文件上使用LC\u COLLATE=“en\u US.UTF-8”
和sort
可提供:
$ LC_COLLATE="en_US.UTF-8" sort t.txt
1 0
11
如果我们检查文件中的第二个字符位置(或列),我们会发现第一个字符
行有一个空格,第二行有一个1
。
因为空格的十六进制值为0x20
,小于1
的十六进制值(即0x31
)
我认为这类人会:
11
1 0
结果表明,可以使用LC\u COLLATE=c
$ LC_COLLATE=c sort t.txt
11
1 0
对于这种情况,LC\u COLLATE=“en\u US.UTF-8”
和LC\u COLLATE=c
之间存在差异的原因是什么
另见:
选项。它取决于您的语言环境。例如,检查
LC_ALL=C排序文件,该文件首先给出11
。看@fedorqui是的,是的!谢谢@fedorqui但是为什么没有LC_ALL=C
它就不能工作呢?(echo$LANG
给出了en_US.UTF-8
)@HåkonHægland简单的答案是“因为不同地区的排序规则不同”。完整的答案可能要复杂一点……谢谢!这很有趣。我在这里还找到了更多信息:和。