【问题标题】:Copy and paste to new file, maintain LF vs CR?复制并粘贴到新文件,维护 LF vs CR?
【发布时间】:2016-11-10 20:36:56
【问题描述】:

我正在使用 EmEditor 手动拆分一些大文件 (3GB+)。我只花了一个小时才意识到新文件只有回车,而旧文件有换行和回车。

这些是 HL7 文件,所以这很重要...

如何在复制/粘贴时保留特殊字符?

【问题讨论】:

    标签: hl7 hl7-v2 emeditor


    【解决方案1】:

    如果您丢失了 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/' winfile.txt

    在 Windows 系统的上下文中,我使用上述代码创建了一个 .bat 文件,创建了一个 Windows 任务来自动执行 .bat,并将适当的“Start In”目录设置为文件转换的目标位置发生。根据上面的代码,我会读入任何名为 unixfile.txt 的文件,将 CRLF 字符添加到包含 CR 的每一行,然后生成一个名为 winfile.txt 的新文件,该文件在每一行都使用 CRLF 正确格式化。

    如果您仍在为此苦苦挣扎,或者您对我建议的任何部分有疑问,请随时告诉我。我已经做了一些文件转换,我是接收 Unix 文件的 Windows 系统,并且我已经成功地自动转换和交付文件,所以我希望这对你有帮助!

    【讨论】:

    • Hl7 区分回车和换行。第一个分隔段,后者表示 MLLP 中的消息结束。因此,将所有一种类型转换为另一种类型或添加额外的 LF 会伪造消息并使它们无法使用。
    • @sqlab 肯定会添加数据,但说不可用是不正确的。您说 HL7 区分回车和换行,这是真的。仅使用回车获取文件将导致大多数接口引擎无法正确处理。通过添加换行并使您的 HL7 集成引擎可以消化该行,这肯定会“伪造”数据,但我看不出这是如何使其无法使用的。你有更好的解决方案吗?
    • 对于它的价值,它们实际上是在 ?nix 盒子上生成的。我通过 FTP 从那里将它们下载到我的 Windows 机器上。
    • 我只是偶尔需要为审计执行此操作,它们总是包含数月数据的巨大文件。下一个出现,我会看看这个解决方案是否有效/可行。谢谢。
    • @Maiza,以 ftp 的二进制模式传输文件保持正确的段分隔符和消息结尾
    猜你喜欢
    • 2017-10-14
    • 2023-03-11
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    相关资源
    最近更新 更多