echo "eh]" | sed -r 's/[\]a]/lol/g'
返回eh]
而不是ehlol
。没有错误被提出所以我认为\]
是某种sed魔法。我厌倦了不断的sed问题,但我必须使用它。那么如何逃避]在sed substition表达?
答案 0 :(得分:0)
您只需使用echo "eh]" | sed -r 's/[]a]/lol/g'
:
]
作为括号内的第一个字符。 ]
和\
有一些特色。
让我引用documentation:
前导^反转列表的含义,以便它匹配列表中没有的任何单个字符。在列表中要包含],将其设为第一个字符(如果需要,在^之后),在列表中包含 - 使其成为第一个或最后一个;包括^把它放在第一个字符之后。
字符
$, *, ., [,
和\
通常在列表中不是特殊。例如,[\*]
匹配'\'或'*',因为\在此处并不特别。但是,[。ch。],[= a =]和[:space:]等字符串在列表中是特殊的,分别表示整理符号,等价类和字符类,因此在列表中是特殊的然后是。,=或:。此外,当不在POSIXLY_CORRECT模式时,列表中会识别\ n和\ t等特殊转义符。请参阅Escapes。