linux - (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(每行的行数)但没有成功。
谁能帮我?
解决方案
有几点需要考虑:
- 数据究竟是如何通过 FTP 传输的?您的“二进制格式(EBCDIC)”根本没有任何意义。FTP 以二进制格式传输,然后在传输过程中没有任何变化或转换。或者 FTP 以文本模式传输,又名。ASCII 模式,然后将数据从特定的 EBCDIC 代码页转换为特定的非 EBCDIC 代码页。您需要知道什么模式,如果是文本模式,使用的两个代码页是什么。
- 从dd的手册页中,不清楚使用什么EBCDIC和ASCII 代码页进行转换。我只是在这里猜测:EBCDIC 代码页可能是 CP-037,ASCII 可能是 CP-437。如果这些与 FTP 中使用的不匹配,则生成的测试数据不正确。
- 我了解您无权访问开发环境中的生产数据。但是,您仍然应该能够从那里使用 FTP 从开发大型机获取测试数据。如果没有,您将如何进行端到端测试?
推荐阅读
- jersey - Jersey 1.x - 将 Swagger 1.x 提升到 2.x
- r - 将日期列表转换为序列
- c# - .NET CORE_Blazor 找不到 Http.SendAsJsonAsync()
- kubernetes - 将文件注入 Helm 模板
- python - 在 Tensorflow 中为输入和输出保持相同的数据集扩充
- c# - 在 C# asp.net mvc 中作为后台运行函数/进程
- c - 将数据从一个数组引用到C中的另一个数组
- c# - 实体框架能否将同一列映射到导航属性和外键
- laravel - VueX / Nuxt Store 返回失败,状态码为 400
- reactjs - React 测试 - 模拟函数