我在Centos上有一个.dat文件,数据由不可打印的字符分隔。
字段分隔符为十六进制(1D
),记录分隔符的结尾为十六进制(0D0A
)。如果我cat
该文件,它看起来像这样:
field1^]field2^]field3^M$
问题:有没有办法让我用'pipe'分隔符(或任何其他合适的分隔符)替换Hex 1D
,以便我可以将数据拉入excel进行某些分析?我的计划是使用管道作为分隔符将字段拆分为excel中的列。
我在这里看到用管道替换的一个问题是,如果字段中的一个数据集也意外地有管道,那么数据可能被错误地拆分,即基于上面的例子,我可能最终得到3个以上列。
或者,我还有其他方法可以解决这个问题吗?最终目标是使数据格式正确,以便在Excel或Tableau中可视化。
答案 0 :(得分:0)
您可以通过多种方式进行翻译。最简单的可能是使用tr
。
tr
[OPTION]... SET1 [SET2]
翻译,挤压和/或删除标准输入中的字符, 写入标准输出。
tr '\035' '|' < data.file
(tr
仅支持八进制转义\ooo
,而0o035为0x1d。)
(记录分隔符已经是(dos样式)CRLF换行符,大多数程序都应该理解。所以这应该是你需要做的全部。)