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

Bash 删除sed中带有特殊字符的特定字符范围,bash,sed,Bash,Sed,我试图整理的答复是: ServerID响应:142[90m[39mtestRuntime 我正试图以以下方式制作它的格式 ServerID响应:142 testRuntime 我认为[90m和[39]是另一个CLI工具中的一些控制字符,因为当我不添加以下内容时,它们显示为空白: 在回显响应之前,tr-dc'[:print:][/code> 我构建了以下sed命令,但它在testRuntime中删除了一个额外的M: tr -dc '[:print:]' | sed 's/[\<\[90m\[

我试图整理的答复是:

ServerID响应:142[90m[39mtestRuntime

我正试图以以下方式制作它的格式

ServerID响应:142 testRuntime

我认为[90m和[39]是另一个CLI工具中的一些控制字符,因为当我不添加以下内容时,它们显示为空白: 在回显响应之前,
tr-dc'[:print:][/code>

我构建了以下sed命令,但它在testRuntime中删除了一个额外的M:

tr -dc '[:print:]' | sed 's/[\<\[90m\[39m\>]//g'
tr-dc'[:print:]['| sed's/[\]//g'
如果整个序列匹配,我将如何制作包含特殊字符的精确匹配命令


提前感谢

[\]
中的外方括号形成了一个括号表达式,该表达式与其中定义的单个字符相匹配。仅删除括号并不能解决问题,因为您使用的是
\
单词边界,此处不打算将其用作
[90m][39m
必须在任何上下文中删除

使用


这将删除文件中任何一行的任何数量的
[90m[39m

使用
sed的/\[90m\[39m//g'
,问题是您将整个模式放置在括号表达式中,并在不应该的位置使用单词边界。@WiktorStribiż非常感谢您,这已经解决了问题。
sed 's/\[90m\[39m//g'