将用作字段分隔符的十六进制字符替换为管道
问题描述:
我有一个.dat文件,坐在Centos上,数据由非打印字符分隔。将用作字段分隔符的十六进制字符替换为管道
字段分隔符是Hex(1D
),记录分隔符的末尾是Hex(0D0A
)。如果我cat
文件,它看起来是这样的:
field1^]field2^]field3^M$
问:有没有办法对我来说,与“管”分隔符(或任何其他适当的分隔符)代替六角1D
这样我就可以拉数据转化为excel进行一些分析?我的计划是在Excel中使用管道作为分隔符将字段拆分为多列。
我在这里看到的替换管道的一个问题是,如果其中一个数据集内的字段也意外地有一个管道,那么数据可能会被错误地分割,即基于上面的例子,我可能会结束多于3列。
或者,有没有其他方法我应该接近这个问题?最终目标是将数据格式正确地在Excel或Tableau中可视化。
答
您可以通过多种方式来翻译它。最简单的可能是使用tr
。
tr
[OPTION]... SET1 [SET2]
翻译,挤压,和/或来自标准输入删除字符, 写入到标准输出。
tr '\035' '|' < data.file
(tr
只支持八进制转义\ooo
,并0o035是0x1d)
(记录定界符已经是一个(DOS样式)CRLF换行符,其中大部分项目应该明白。所以这应该是你所需要做的。)
你是一个传奇人物。像魅力一样工作,也学到了一些永远不错的新东西。 – Sandeep