微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

(dd 命令 linux) 最后一个字节转到下一行

如何解决(dd 命令 linux) 最后一个字节转到下一行

嗨,朋友们,我需要一些帮助。

我们有一个工具可以将二进制文件转换为文本文件,然后存储到 Hadoop (HDFS) 中。

在生产中,该摄取工具使用 ftp 以二进制格式 (EBCDIC) 从大型机下载文件,而我们无法在开发环境中从大型机下载文件

为了测试文件转换,我们手动创建文本文件,我们尝试使用 dd 命令(linux)转换文件,使用以下参数:

dd if=asciifile.txt of=ebcdicfile conf=ebcdic

通过我们的转换工具后,预期的结果是:

000000000000000               DATA
000000000000000               DATA
000000000000000               DATA
000000000000000               DATA

但是,它返回以下结果:

000000000000000               DAT
A000000000000000               DA
TA000000000000000               D
ATA000000000000000               

我尝试过使用 cbs、obs 和 ibs 参数,但没有成功分配 lrec(每行的行数)。

有人可以帮我吗?

解决方法

需要考虑的一些事项:

  1. 数据是如何通过 FTP 传输的?您的“二进制格式(EBCDIC)” 根本没有任何意义。 FTP 要么以二进制格式传输,然后没有任何改变,要么在传输过程中进行转换。或者 FTP 以文本模式传输,也就是。 ASCII 模式,然后数据从特定的 EBCDIC 代码页转换为特定的非 EBCDIC 代码页。您需要知道什么模式,如果是文本模式,使用的两个代码页是什么。
  2. dd 的手册页中,不清楚用于转换的 EBCDICASCII 代码页。我只是在这里猜测:EBCDIC 代码页可能是 CP-037,而 ASCII 可能是 CP-437。如果这些与 FTP 中使用的不匹配,则生成的测试数据不正确。
  3. 我了解您无权访问开发环境中的生产数据。但是,您应该仍然能够使用 FTP 从开发大型机获取测试数据。如果没有,您将如何进行端到端测试?
,

EBCDIC 转换正在吞噬您的行尾:

https://www.ibm.com/docs/en/zos/2.2.0?topic=server-different-end-line-characters-in-text-files

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。