[这是我向后问的一个类似问题的重写......抱歉这个混乱!]
我对领先的s和标准sort实用程序感到困惑.考虑以下内容myfile:
a
b
a
Run Code Online (Sandbox Code Playgroud)
执行sort -t : myfile收益意外的结果,至少对我来说:
a
a
b
Run Code Online (Sandbox Code Playgroud)
那有意义吗?<space>应该在之前a-z(如ASCII的情况)或之后.在第一种情况下,我会期待
a
b
a
Run Code Online (Sandbox Code Playgroud)
而在第二种情况下
a
b
a
Run Code Online (Sandbox Code Playgroud)
那么,为什么sort看起来似乎应用了-b选项(忽略前导s),如果不包括它?事实上,为了安全起见,我添加了-t选项,以便在每一行中只有一个字段.(根据POSIX标准,"字段包含最大的非分隔字符序列,并且在没有选项-t的情况下,任何前面的字段分隔符." sort myfile产生相同的输出,这也是意外的.)
提前致谢!
Dav*_*son 10
这取决于区域设置.同
LC_COLLATE=en_US.utf8 sort myfile
Run Code Online (Sandbox Code Playgroud)
我得到你意想不到的结果,并且
LC_COLLATE=C sort myfile
Run Code Online (Sandbox Code Playgroud)
我得到你的预期结果.另见bash排序异常顺序.空间问题?
(我不知道为什么排序处理-b和-t像这样.)
$ sort -t : foo
a
a
b
$ env LC_ALL=C sort -t: foo
a
b
a
Run Code Online (Sandbox Code Playgroud)
从手册页: *警告*环境指定的区域设置会影响排序顺序.设置LC_ALL = C以获取使用本机字节值的传统排序顺序.