【问题标题】:Different versions of UNIX sort handle case differently不同版本的 UNIX 排序处理大小写不同
【发布时间】:2011-08-17 09:14:23
【问题描述】:

我在 Mac OS X 和 Ubuntu Linux 上都使用sort,我观察到大写/小写比较的不同处理方式。

在 Mac OS X 上,sort (GNU coreutils) 5.93 给出了我期望的行为:

$ sort <<EOF
> Aa
> aa
> Ab
> ab
> EOF
Aa
Ab
aa
ab

在 Ubuntu 上,sort (GNU coreutils) 8.5 似乎忽略了大小写:

$ sort <<EOF
> Aa
> aa
> Ab
> ab
> EOF
aa
Aa
ab
Ab

有没有办法禁用这种行为?我需要区分大小写的排序。 我尝试将LOCALE 更改为C,但没有任何改变。

或者,是否有任何其他简单的实用程序可以对大文件进行排序,将每一行视为一个字节字符串?

【问题讨论】:

  • 有趣。我想在 Perl 或 Python 中编写您想要的 sort 需要 5 行代码,所以如果您可以接受这样的解决方案,也许有人可以将其作为答案。
  • UNIX sort 进行外部排序,我需要对不适合 RAM 的文件进行排序。我不认为你可以在 5 行 Perl 中做到这一点 :)
  • 哦,这就是您所说的“大”。很高兴把它说清楚。

标签: unix shell sorting


【解决方案1】:

尝试使用 POSIX:'export LANG=POSIX'

【讨论】:

  • 不客气 ;) 将 LANG 设置为 POSIX 意味着字符是 ASCII 编码的。在某些 Linux 发行版中,root 用户将 LANG 设置为 POSIX,普通用户使用 .UTF-8,因此排序不同。
猜你喜欢
  • 2023-03-16
  • 2023-04-01
  • 1970-01-01
  • 2014-11-03
  • 2021-09-04
  • 2019-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多