gpt4 book ai didi

perl - Linux 排序与 Perl 字符串比较

转载 作者:行者123 更新时间:2023-12-03 22:21:57 25 4
gpt4 key购买 nike

因为我正在处理非常大的文件,所以我在比较它们之前对我的基本文件和候选文件进行了排序,以查看彼此之间缺少哪些行。我这样做是为了避免将记录保留在内存中。排序是通过使用 Linux 命令行工具 sort 完成的。

在我的 Perl 脚本中,我会查看该行中的字符串是 lt、gt 还是 eq 到另一个文件中的行,并在必要时推进文件中的指针。但是,当我注意到我的字符串比较认为基本文件中的字符串是候选文件中包含特殊字符的字符串时,我遇到了问题。

是否有确保我的 Linux 排序和 Perl 字符串比较使用相同类型的字符串比较器的可靠方法?

最佳答案

sort命令使用当前语言环境,由环境变量 LC_ALL 指定, 以确定字符的排序顺序。通常修复排序问题的最简单方法是手动将其设置为 C locale,它将每个 8 位字节视为单个字符并通过简单的数值进行比较。在大多数 shell 中,这可以一次性完成,只需为单个命令添加前缀,如下所示:

LC_ALL=C sort < infile > outfile

这也将解决一些其他文本处理程序的类似问题。 (例如,我记得在德国人的计算机上处​​理 CSV 文件时出现问题——这可以追溯到德国人使用逗号而不是小数点的事实。将 LC_ALL=C 放在相关命令前面也解决了这个问题。)

[编辑] 尽管可以指示 Perl 将某些字符串视为 Unicode,但默认情况下它仍将输入和输出视为 8 位字节的流,因此上述方法应产生与 Perl 的 sort() 相同的顺序。功能。 (感谢 Ven'Tatsu 提供了这个金块。)

关于perl - Linux 排序与 Perl 字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4755129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com