首页 > 解决方案 > (dd command 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(每行的行数)但没有成功。

谁能帮我?

标签: linuxbashmainframe

解决方案


有几点需要考虑:

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

推荐阅读