我正在使用 EmEditor 手动拆分一些大文件 (3GB+)。我只花了一个小时才意识到新文件只有回车,而旧文件有换行和回车。
这些是 HL7 文件,所以这很重要……
如何在复制/粘贴时保留特殊字符?
如果您丢失了 LF 字符,我会假设这是由 Windows 系统生成的文件,并且它已在基于 Unix 的系统中被引入和修改/操作。我已经在这两个平台之间遇到了这个问题,因为 Windows 读取了一个新行作为 CRLF,而 Unix 只查找 CR,正如您在上面指出的那样。
我已经成功地在两个平台之间自动执行文件移动/操作过程,特别是针对这个 CRLF 问题,使用 perl 脚本在每行末尾添加 LF。转换可以双向进行,关于如何利用 perl 执行此操作(以及解决此确切问题的其他方法)的好文章位于:https ://kb.iu.edu/d/acux
具体来说,您可以从 www.perl.org 下载 perl 安装(它是免费的),然后运行以下代码,指出该脚本应专门在 perl 中运行:
perl -p -e 's/\n/\r\n/' < unixfile.txt > winfile.txt
在 Windows 系统的上下文中,我使用上面的代码创建了一个 .bat 文件,创建了一个 Windows 任务来自动化 .bat,并将适当的“Start In”目录设置为将要进行文件转换的位置。根据上面的代码,我会读入任何名为 unixfile.txt 的文件,将 CRLF 字符添加到包含 CR 的每一行,然后输出一个名为 winfile.txt 的新文件,该文件在每一行都使用 CRLF 正确格式化。
如果您仍在为此苦苦挣扎,或者您对我建议的任何部分有疑问,请随时告诉我。我已经完成了一些文件转换,其中我是接收 Unix 文件的 Windows 系统,并且我已经成功地自动转换和交付文件,所以我希望这对你有帮助!