使用sed删除括号中的字符串

Ted*_*y T 3 bash sed

我无法确定如何在括号中删除括号中的字符串.例如,我想删除字符串"(笑声)",但只有当它在括号中而不是仅仅使其区分大小写时,因为该字符串中的句子以笑声开头.

Mig*_*ork 5

我不确定我是否理解正确,但以下内容将删除括号内的文字:

sed "s/[(][^)]*[)]/()/g" myfile
Run Code Online (Sandbox Code Playgroud)

(或正如Llama在评论中指出的那样,只是:)

sed "s/([^)]*)/()/g" myfile
Run Code Online (Sandbox Code Playgroud)

它匹配一个文字的开放式paren,[(]后跟任意数量的非)字符,[^)]*后跟一个文字的紧密paren [)].

例:

$ echo "Blah blah (potato) moo (cow is a pretty bird)(hello)" | sed "s/[(][^)]*[)]/()/g"
Blah blah () moo ()()
Run Code Online (Sandbox Code Playgroud)

如果您不希望输出中有空的parens,请使用//而不是/()/那里.