我是一个维护Kindle(HTML)和Open Office版本的书籍的作者。我有时会忘记对其中一个进行更改,而文档却出现了分歧。
我的步骤是复制每个文件中的文本并将其粘贴到单独的文本文件中(使用TextEdit中的粘贴和匹配样式),然后执行差分操作。但是,HTML粘贴会在段落之间添加空行。
我有一个文件差异工具,但它没有忽略空行的选项。我的想法是编写一个Perl脚本来删除空行。但是,该脚本的输出搞错了特殊字符--如连字符、卷曲引号等。我尝试过使用BINMODE和其他技巧,但都无济于事。
我将接受一个指向MAC OS X的空闲比较程序的指针,该比较程序忽略空行,或者接受一种使Perl不会搞错UTF-8特殊字符的方法。我使用的是Perl 5.14。我更喜欢不依赖于新特性的答案,但如果我必须安装新的Perl,我会这样做。
更新:
这不起作用:
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问题的提示,但没有成功:
open(my $fh, "<:encoding(UTF-8)", "filename");
发布于 2012-07-19 04:39:04
我最终使用了XCode文本编辑器。通过选择一个换行符并将其粘贴到搜索/替换对话框中,我能够用单个换行符替换所有的双换行符。然后我保存了文件并使用了我的比较工具。
发布于 2012-07-16 00:37:16
GNU diff有-B
/--ignore-blank-lines
和-b
/--ignore-space-change
。
发布于 2012-07-16 01:27:43
错误,"use open“说明你的数据不是UTF-8格式的。在文件和输出上都尝试binmode吗?
https://stackoverflow.com/questions/11492271
复制相似问题