使用GNU sed
,我需要删除包括parens在内的(click here ....)
等括号内的短语。 click here
后面的文字各不相同,但我需要删除整个外括号。
我在下面尝试了很多变化,但我似乎无法找到正确的变体:
sed -e 's/\((click here.*[^)]*\)//'
编辑愚蠢的我没有注意到在括号字符串的中间经常会出现换行符,所以sed
可能无法正常工作。例如:
(click here to
enter some text)
答案 0 :(得分:3)
如果没有嵌套的parens,也许您可以尝试类似:
sed -e 's/(click here [^)]*)//'
答案 1 :(得分:2)
使用perl,您可以运行:
perl -00 -pe "s/\(click here [^)]*\)//g" inputfile > outputfile
它将读取字符串中的inputfile,然后替换所有出现的(click here anychar but '(' )
,然后在outputfile中输出all。
答案 2 :(得分:1)
这是另一种sed
方法,它将完整输入保存在保持缓冲区中:
# 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;}'