首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >比较两个UTF-8文本文件并忽略空白或全部为空白的行

比较两个UTF-8文本文件并忽略空白或全部为空白的行
EN

Stack Overflow用户
提问于 2012-07-15 21:24:24
回答 3查看 398关注 0票数 0

我是一个维护Kindle(HTML)和Open Office版本的书籍的作者。我有时会忘记对其中一个进行更改,而文档却出现了分歧。

我的步骤是复制每个文件中的文本并将其粘贴到单独的文本文件中(使用TextEdit中的粘贴和匹配样式),然后执行差分操作。但是,HTML粘贴会在段落之间添加空行。

我有一个文件差异工具,但它没有忽略空行的选项。我的想法是编写一个Perl脚本来删除空行。但是,该脚本的输出搞错了特殊字符--如连字符、卷曲引号等。我尝试过使用BINMODE和其他技巧,但都无济于事。

我将接受一个指向MAC OS X的空闲比较程序的指针,该比较程序忽略空行,或者接受一种使Perl不会搞错UTF-8特殊字符的方法。我使用的是Perl 5.14。我更喜欢不依赖于新特性的答案,但如果我必须安装新的Perl,我会这样做。

更新:

这不起作用:

代码语言:javascript
运行
复制
use open IO  => ":encoding(iso-8859-7)";
open(FILE, "From HTML.txt") or die "$!\n";
open(OUT, ">From HTML - no blank lines.txt") or die "$!\n";
while(<FILE>) {
    next if /^\s*$/;
    print OUT $_;
}
close FILE; close OUT;

我也试着给binmode(OUT, ":utf8");打电话

更新:尝试了另一个Stackoverflow问题的提示,但没有成功:

代码语言:javascript
运行
复制
open(my $fh, "<:encoding(UTF-8)", "filename");
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-19 04:39:04

我最终使用了XCode文本编辑器。通过选择一个换行符并将其粘贴到搜索/替换对话框中,我能够用单个换行符替换所有的双换行符。然后我保存了文件并使用了我的比较工具。

票数 0
EN

Stack Overflow用户

发布于 2012-07-16 00:37:16

GNU diff-B/--ignore-blank-lines-b/--ignore-space-change

票数 1
EN

Stack Overflow用户

发布于 2012-07-16 01:27:43

错误,"use open“说明你的数据不是UTF-8格式的。在文件和输出上都尝试binmode吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11492271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档