/bin/sort 似乎忽略了输入中的正斜杠

/bin/sort 似乎忽略了输入中的正斜杠

我运行的是 Ubuntu 20.0.4。

考虑以下文件的这些内容(假设该文件名为input)...

/zzzzz foo bar
/hij zzz
xyz abc 
/abc 
ijk lmnop
qwer tyuiop 
abc def

如果我运行/bin/sort input,我会得到以下输出......

/abc 
abc def
/hij zzz
ijk lmnop
qwer tyuiop 
xyz abc 
/zzzzz foo bar

如您所见,排序算法完全忽略了前导斜杠。sort手册页中没有提到以任何特殊方式处理斜杠。

但是,如果我用该字符替换每个正斜杠$,则不会发生这种行为。例如,假设一个名为的文件newinput包含这些值......

$zzzzz foo bar
$hij zzz
xyz abc 
$abc 
ijk lmnop
qwer tyuiop 
abc def

换句话说,除了字符已更改为字符之外,newinput与 相同。当我这样做时,我得到这些结果......input/$/bin/sort newinput

$abc 
$hij zzz
$zzzzz foo bar
abc def
ijk lmnop
qwer tyuiop 
xyz abc 

正如您所看到的,在这种情况下,$确实被 视为正常的可排序字符/bin/sort

那么,这到底是怎么回事?我该如何引起人们/bin/sort对角色的关注/

预先感谢您的任何想法和建议。

更新:如果我在 Debian 下执行此操作,排序工作正常,无论是关于/还是$

所以,我想知道这种行为是否可能是 Ubuntu 的一个“功能”。

答案1

啊哈!我想到了!

在我的 Ubuntu 机器上,我已LC_ALL设置为en_US.UTF8,在我的 Debian 机器上,我已LC_ALL设置为C.UTF8。如果我在我的 Ubuntu 机器上更改LC_ALLC.UTF8,则正斜杠将被排序为常规字符。如果我在 Debian 盒子上更改LC_ALLen_US.UTF8,那么斜杠也会被忽略。

所以这种行为似乎是编码的产物en_US.UTF8

这是正确的行为吗en_US.UTF8

不管怎样,我现在知道如何通过适当的设置来解决这个“功能” LC_ALL

聚苯乙烯:而且,正如 Stephen Harris 上面指出的,设置LANG为与设置为C相同的方式可以修复此问题。LC_ALLC.UTF8

相关内容