【问题标题】:Replace hex character used as field delimiter to pipe将用作字段分隔符的十六进制字符替换为管道
【发布时间】:2017-07-19 23:56:45
【问题描述】:

我在 Centos 上有一个 .dat 文件,其中的数据由不可打印的字符分隔。

字段分隔符是十六进制 (1D),记录结束分隔符是十六进制 (0D0A)。如果我cat 文件,它看起来像这样:

field1^]field2^]field3^M$

问题:有没有办法让我用“管道”分隔符(或任何其他合适的分隔符)替换 Hex 1D,以便我可以将数据提取到 excel 中进行分析?我的计划是使用管道作为分隔符将字段拆分为 Excel 中的列。

我在这里看到用管道替换的一个问题是,如果字段中的一个数据集也意外地有一个管道,那么数据可能会被错误地拆分,即基于上面的示例,我最终可能会得到超过 3 个列。

或者,我还有其他方法可以解决这个问题吗?最终目标是正确格式化数据,以便在 Excel 或 Tableau 中可视化。

【问题讨论】:

    标签: linux hex csv


    【解决方案1】:

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

    tr [OPTION]... SET1 [SET2]

    翻译、压缩和/或删除标准输入中的字符, 写入标准输出。

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

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

    (记录分隔符已经是(dos 风格的)CRLF 换行符,大多数程序都应该理解。所以这应该是你需要做的所有事情。)

    【讨论】:

    • 你是个传奇。工作就像一个魅力,也学到了一些新的东西,这总是好的。
    猜你喜欢
    • 2015-02-18
    • 2018-01-31
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2018-01-26
    • 2018-11-12
    相关资源
    最近更新 更多