如何在 sed 中转义方括号
How to escape square closing bracket in sed
我正在使用 grep 和 sed 解析旧版 C 代码,在尝试替换方括号时,发生了一些奇怪的事情。
以下替换方括号的代码工作正常:
$ echo "xyx[xzx]xyx" | sed 's|[\[]| |g'
结果:
xyx xzx]xyx
当我现在将 \]
添加到 sed 的字符串中以替换方括号时,它停止工作:
$ echo "xyx[xzx]xyx" | sed 's|[\[\]]| |g'
现在的结果是:
xyx[xzx]xyx
据我所知,这是转义方括号的正确方法。
我做错了什么?
我 运行 在 Ubuntu 14.04 机器上。
你甚至不需要逃跑:
echo "xyx[xzx]xyx" | sed 's|[][]| |g'
xyx xzx xyx
但是请记住,]
然后 [
的顺序在这里很重要。
我正在使用 grep 和 sed 解析旧版 C 代码,在尝试替换方括号时,发生了一些奇怪的事情。
以下替换方括号的代码工作正常:
$ echo "xyx[xzx]xyx" | sed 's|[\[]| |g'
结果:
xyx xzx]xyx
当我现在将 \]
添加到 sed 的字符串中以替换方括号时,它停止工作:
$ echo "xyx[xzx]xyx" | sed 's|[\[\]]| |g'
现在的结果是:
xyx[xzx]xyx
据我所知,这是转义方括号的正确方法。
我做错了什么?
我 运行 在 Ubuntu 14.04 机器上。
你甚至不需要逃跑:
echo "xyx[xzx]xyx" | sed 's|[][]| |g'
xyx xzx xyx
但是请记住,]
然后 [
的顺序在这里很重要。