从 AIX 到 Windows 的文件传输 - CR 和 LF 问题(控制字符)

从 AIX 到 Windows 的文件传输 - CR 和 LF 问题(控制字符)

我在 Unix(AIX) 和 Windows 之间传输文件时遇到问题。我使用以下挂载命令在 Unix 上挂载 Windows 文件夹。

mount -v cifs -n /admin/@dmin -o file_mode=775,dir_mode=775,uid=0,gid=0 /TEST/Finance

在我的 Windows 计算机上,我在此安装目录中选取这些文件进行处理。我使用 IBM Connect:Direct 来传输文件。

问题是,当将文件从 Unix 上的 Windows Mount 移动到 Windows 服务器时,我的文件中缺少 CR(回车符),仅存在 LF(换行符),这意味着当您使用记事本打开时,您可以一行查看所有文本。

从 Unix 到 Windows 传输文件时如何保留 CR 和 LF?

我的mount命令有问题吗?

答案1

我认为这可能与安装无关。您确定 CR 字符原来存在于文件中吗?假设它们不存在,您可以使用unix2dos它们来添加它们,尽管我尚未实际验证 AIX 是否存在。你可以使用 sed 像

sed -i -e 's/\n/\r\n/g' <file>

如果你没有unix2dos可用的。该-i标志告诉 sed 就地修改文件——通常它将结果打印到标准输出。您可以拥有任意数量的-e标志来告诉 sed 执行某些操作。在本例中,我们使用操作s来替换值。用作/替换命令的分隔符。第一部分\n是我们正在寻找的模式,第二部分\r\n是要替换它的模式。最后一个g告诉 sed 匹配它所看到的所有位置,而不仅仅是每行的第一个位置(尽管这在匹配行尾时可能并不重要)。

答案2

如何安装分区并不重要。每个文件的每个字节都将被传输。如果您的文件在传输后没有回车符,那么它们之前就没有回车符。我不知道在 AIX 上运行什么命令来检查文件的编码,但您可以在二进制编辑器中查看它们,看看这些行是否以 LF 或 CRLF 终止。

如果要将文本文件从 UNIX 复制到 Windows 并将换行符转换为 CRLF,可以ftp在 ASCII 模式下使用。我认为串行连接也可以进行换行转换。我不知道有任何其他协议尝试在传输过程中转换文本,尽管可能有一些。

您还可以在传输之前或之后转换所有文件,或者使用 Windows 上能够识别 UNIX 换行符的编辑器。

相关内容