如何在sed中的字符类中转义char

时间:2017-01-07 13:28:18

标签: sed escaping substitution

echo "eh]" | sed -r 's/[\]a]/lol/g'返回eh]而不是ehlol。没有错误被提出所以我认为\]是某种sed魔法。我厌倦了不断的sed问题,但我必须使用它。那么如何逃避]在sed substition表达?

1 个答案:

答案 0 :(得分:0)

您只需使用echo "eh]" | sed -r 's/[]a]/lol/g'

即可
  • 没有反斜杠
  • ]作为括号内的第一个字符。
在括号内使用时,

]\有一些特色。 让我引用documentation

  

前导^反转列表的含义,以便它匹配列表中没有的任何单个字符。在列表中要包含],将其设为第一个字符(如果需要,在^之后),在列表中包含 - 使其成为第一个或最后一个;包括^把它放在第一个字符之后。

     

字符$, *, ., [,\通常在列表中不是特殊。例如,[\*]匹配'\'或'*',因为\在此处并不特别。但是,[。ch。],[= a =]和[:space:]等字符串在列表中是特殊的,分别表示整理符号,等价类和字符类,因此在列表中是特殊的然后是。,=或:。此外,当不在POSIXLY_CORRECT模式时,列表中会识别\ n和\ t等特殊转义符。请参阅Escapes。