sed或perl仅当第一个内部单词匹配时才删除外部括号

|| 使用GNU
sed
,我需要删除括号内的短语,例如
(click here ....)
,包括括号。
click here
之后的文字各不相同,但我需要删除整个外部括号。 我在以下方面尝试了多种变体,但似乎找不到正确的方法:
sed -e \'s/\\((click here.*[^)]*\\)//\'
编辑愚蠢的是,我没有注意到括号字符串的中间实际上经常有换行符,所以
sed
可能行不通。例:
(click here to
enter some text)
    
已邀请:
        使用perl可以运行:
perl -00 -pe \"s/\\(click here [^)]*\\)//g\" inputfile > outputfile
它将读取字符串中的输入文件,然后替换所有出现的“ 7”,然后将所有输出输出到输出文件中。     
        如果没有嵌套的括号,则可以尝试执行以下操作:
sed -e \'s/(click here [^)]*)//\'
    
        这是将完整的输入保留在保持缓冲区中的另一种“ 0”方法:
# see http://austinmatzko.com/2008/04/26/sed-multi-line-search-and-replace/
echo \'
()
(do not delete this)
()
(click here to
enter some text)
()
\' | 
sed -n \'1h;1!H;${;g;s/(\\([^)]*\\))/\\1/g;p;}\'
    

要回复问题请先登录注册