sed 单行删除一对括号之间的所有内容?

sed 单行删除一对括号之间的所有内容?

我正在处理一些在方括号 [] 之间充满了我不想要的内容的文本。由于我可以自己删除括号,因此我不需要单行代码来为我执行此操作,但我确实需要一个单行代码来删除它们之间的所有内容。

用圆括号 () 代替方括号怎么样?

答案1

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

sed -e 's/\[[^][]*\]//g'

请注意,在括号表达式中[^][],要匹配除[or以外的任何内容]]必须将 放在第一位。通常 a]会结束字符集,但如果它是字符集中的第一个字符(此处是在^补码字符之后),则 a]代表其自身。

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

答案2

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

相关内容