代码之家  ›  专栏  ›  技术社区  ›  njamescouk

使用sed或tr和bash将制表符转换为单位分隔符

  •  1
  • njamescouk  · 技术社区  · 4 周前

    as title-我想将输入文件/stdin中的制表符转换为stdout/重定向文件上的asciii单元分隔符。

    以下所有内容均无效

    tr 0x09 0x1f
    tr '0x09' '0x1f'
    sed  's#0x09#0x1f#g'
    sed s#0x09#0x1f#g
    

    没有效果

    2 回复  |  直到 4 周前
        1
  •  2
  •   choroba    4 周前

    两者都没有 tr 也没有 sed 理解 0x09 0x1f 在bash中,你可以使用 $'...' 带有C风格反斜杠转义序列的引号。这种风格既能理解 \t \x... 符号。

    printf 'a\tb\n' | sed $'s/\t/\x1f/g'
    printf 'a\tb\n' | tr '\t' $'\x1f'
    
        2
  •  2
  •   Cyrus    4 周前

    GNU tr :

    tr '\t' '\37'
    

    \t :水平选项卡

    \37 :单位分隔符(八进制37,十六进制1f)

    请参阅: man tr