【问题标题】:How to Remove ^[ characters from a file using Linux shell scripting?如何使用 Linux shell 脚本从文件中删除 ^[ 字符?
【发布时间】:2011-06-30 10:07:40
【问题描述】:

使用 Linux shell 脚本,我怎样才能从以下内容中删除 ^[ 字符:

^[[0mCAM1> 
^[[0^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H
 rcv-multicast: 0
      tx-bytes: 33649974
    tx-packets: 99133

【问题讨论】:

  • 您想只删除 ^[ 还是删除所有转义序列?
  • 这是从哪里来的?一份文件 ? ^[ 是转义符号(ASCII 字符 27/0x1B),IIRC ^[[0m 是重置字符颜色和属性的序列。
  • this duplicate问题,有更好的答案

标签: linux shell scripting


【解决方案1】:

您可以使用sed 从文件中删除字符,如下所示:

sed -i '' -e 's/^[//g' somefile

-i '' 导致它就地更改文件(不是复制)。

【讨论】:

    【解决方案2】:

    例如,您可以使用 sed 来实现:

    sed 's/^\[//g' oldfile > newfile;
    mv newfile oldfile;
    

    (它只会删除尾括号,如果要删除所有括号,请从 sed 表达式中删除 ^ 符号)

    【讨论】:

      【解决方案3】:

      您可以通过以下方式删除这些控制字符:

      tr -d "[:cntrl:]" file.txt
      

      但是它也会删除新的行尾,所以这里有个技巧,定义这个别名:

      alias clean='tr "\r\n" "\275\276" | tr -d "[:cntrl:]" | tr "\275\276" "\r\n"'
      

      然后尝试:

      cat file.txt | clean > new_file.txt
      

      【讨论】:

        猜你喜欢
        • 2011-09-25
        • 2012-08-14
        • 2012-06-27
        • 2012-11-14
        • 1970-01-01
        • 2017-01-25
        • 2016-11-14
        • 2017-07-09
        • 1970-01-01
        相关资源
        最近更新 更多