sed one-liner 删除一对括号之间的所有内容?

ixt*_*lix 20 sed regular-expression

我正在处理一些文本,这些文本在括号 [] 之间充满了我不想要的东西。因为我可以自己删除括号,所以我不需要单行为我做这件事,但我确实需要一个单行来删除它们之间的所有内容。

括号 () 而不是方括号呢?

Gil*_*il' 24

替换[some text]为空字符串。假设您不想解析嵌套括号,some text则不能包含任何括号。

sed -e 's/\[[^][]*\]//g'
Run Code Online (Sandbox Code Playgroud)

请注意,在括号表达式中[^][]要匹配除[or 之外的任何内容]]必须先出现。通常 a]会结束字符集,但如果它是集合中的第一个字符(这里是^补码字符之后),则]代表它自己。

如果您确实想解析嵌套的括号,或者括号内的文本可以跨越多行,则 sed 不是正确的工具。


ixt*_*lix 9

该命令sed -e 's/([^()]*)//g'将使用括号而不是方括号。