dag*_*ies 17 linux sorting shell locale
给定一个文件txt:
ab
a c
a a
Run Code Online (Sandbox Code Playgroud)
打电话时sort txt,我获得:
a a
ab
a c
Run Code Online (Sandbox Code Playgroud)
换句话说,它不是正确的排序,它有点删除/忽略空白!我希望这是行为,sort -i但无论是否有-i旗帜都会发生.
我想获得"正确"的排序:
a a
a c
ab
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
dag*_*ies 18
解决方法:
export LC_ALL=C
Run Code Online (Sandbox Code Playgroud)
警告:环境指定的区域设置会影响排序顺序.设置LC_ALL = C以获取使用本机字节值的传统排序顺序.
(至少适用于ASCII,不知道UTF8)
thi*_*ton 11
就像前面提到的LC_ALL=C sort那样,诀窍.这仅仅是因为不同的语言对字符排序有不同的规则,这些规则通常由高级语言学家而不是CS专家来规划.对于您的语言环境,这些规则似乎表明在排序时应该忽略空格.
通过为LC_ALL = C添加前缀(或者,当LC_ALL未设置时,LC_COLLATE=C足够),您可以明确地声明与语言无关的排序(以及使用LC_ALL,数字格式和填充),这是您在此上下文中所需的.如果要将其设为默认值,请在您的环境中导出LC_COLLATE.
以这种方式选择默认值以保持与"正常",真实世界的排序方案(如白页)的一致性,这通常忽略空格.
| 归档时间: |
|
| 查看次数: |
10701 次 |
| 最近记录: |