2017-07-19 185 views
1

我有一个.dat文件,坐在Centos上,数据由非打印字符分隔。将用作字段分隔符的十六进制字符替换为管道

字段分隔符是Hex(1D),记录分隔符的末尾是Hex(0D0A)。如果我cat文件,它看起来是这样的:

field1^]field2^]field3^M$ 

问:有没有办法对我来说,与“管”分隔符(或任何其他适当的分隔符)代替六角1D这样我就可以拉数据转化为excel进行一些分析?我的计划是在Excel中使用管道作为分隔符将字段拆分为多列。

我在这里看到的替换管道的一个问题是,如果其中一个数据集内的字段也意外地有一个管道,那么数据可能会被错误地分割,即基于上面的例子,我可能会结束多于3列。

或者,有没有其他方法我应该接近这个问题?最终目标是将数据格式正确地在Excel或Tableau中可视化。

回答

0

您可以通过多种方式来翻译它。最简单的可能是使用tr

tr[OPTION]... SET1 [SET2]

翻译,挤压,和/或来自标准输入删除字符, 写入到标准输出。

tr '\035' '|' < data.file 

tr只支持八进制转义\ooo,并0o035是0x1d)

(记录定界符已经是一个(DOS样式)CRLF换行符,其中大部分项目应该明白。所以这应该是你所需要做的。)

+0

你是一个传奇人物。像魅力一样工作,也学到了一些永远不错的新东西。 – Sandeep

相关问题