直接上结论
sed "s/\[[^]]\+\]//g"
解释
sed默认是Basic regular expression (BRE)。 [ 有特殊含义,而 ? + () {} | 没有特殊含义。
所以开头是\[,结尾是\]。需要转义,表示匹配 [ 和 ] 本身。
然后中间需要匹配其它字符多次。其它字符使用[^xxx]的形式,^出现在[]中的第一个字符时,表示取反。
但是为啥是:[^]],而不是 [^\]] 呢。因为,大多数元字符在[]中,失去了它们的特殊含义。
最后匹配多次使用\+。在BRE中,+没有特殊含义,因此使用反斜杠。