2016-11-10 68 views
1

我正在使用EmEditor手动分割一些大文件(3GB +)。我只花了一个小时才知道新文件只有Carriage Returns,旧文件有Line Feeds和Carriage Returns。复制并粘贴到新文件,保持LF与CR?

这些HL7文件,所以这是一种重要的...

我怎样才能保持对复制/粘贴特殊字符?

回答

1

如果你正在失去你的LF字符,我将假设这是一个由Windows系统生成的文件,它已经在基于Unix的系统中引入并修改/操作。我已经遇到了这两个平台之间的问题,因为Windows会像CRLF那样读取一条新的行,并且Unix只会查找CR,就像您上面指出的那样。

我在两个平台之间自动执行文件移动/操作过程方面取得了成功,并且特别针对此CRLF问题,使用了在每行末尾添加LF的perl脚本。转换可以双向进行,关于如何利用perl来做到这一点(以及解决这个确切问题的其他方法)的好书面文章位于:https://kb.iu.edu/d/acux

具体来说,您可以下载一个perl安装www.perl.org(它是免费的),然后运行下面的代码,调用这个脚本应该在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系统,并且我已经成功实现了自动化转换和交付文件,所以我希望您觉得这有帮助!

+2

Hl7区分回车和换行。第一个分割段,后者表示MLLP中的消息结束。因此,将所有一种转换为另一种或添加额外的LF伪造消息并使其不可用。 – sqlab

+0

@sqlab它肯定会增加数据,但是说它不可用是不正确的。你说HL7区分回车和换行,这是真的。仅通过回车来获取文件将导致大多数接口引擎无法正确处理。这绝对是通过添加换行并通过HL7集成引擎使行消化而“伪造”数据,但我无法看到这是如何使其无法使用的。你有更好的方案来解决这个问题吗? – Maiza

+1

为什么它们实际上是在一个?nix盒子上生成的。我从那里通过FTP将它们下载到我的Windows机器上。 –