删除带有特殊字符的sed中的特定字符范围

时间:2019-02-26 18:14:35

标签: bash sed

我要整理的答复是:

  

ServerID响应:142 [90m [39mtestRuntime

我正在尝试通过以下方式设置其格式

  

ServerID响应:142 testRuntime

我相信[90m和[39是来自另一个CLI工具的一些控制字符,因为当我不添加时,它们会显示为空格。 tr -dc '[:print:],然后回显响应。

我已经构建了以下sed命令,但它在testRuntime中删除了另一个M:

tr -dc '[:print:]' | sed 's/[\<\[90m\[39m\>]//g'

只有在整个序列都匹配的情况下,我才能做出包括特殊字符的精确匹配命令吗?

预先感谢

1 个答案:

答案 0 :(得分:2)

[\<\[90m\[39m\>]中的外部方括号形成一个括号表达式,该表达式与其中定义的单个字符匹配。仅删除括号并不能解决问题,因为您正在使用\<\>字边界,因为在{em> any中必须删除[90m[39m 上下文。

使用

sed 's/\[90m\[39m//g'

这将删除一行中任何数量的[90m[39m,在文件中的所有位置。