我正在尝试查找<li ><a href='xxxxxxxx'>some_link</a></li>
并将其替换为空。要做到这一点,我正在运行下面的命令,但它正在识别$作为正则表达式的一部分。
perl -p -i -e 's/<li ><a href=.*$SOMEVAR.*li>\n//g' file.html
我尝试了以下事项,
${SOMEVAR}
\$SOMEVAR
FIND="<li ><a href=.*$SOMEVAR.*li>"; perl -p -i -e 's/$FIND//g' file.html
有什么想法吗?感谢。
答案 0 :(得分:11)
Bash只用双引号进行变量替换。
这应该有效:
perl -p -i -e "s/<li ><a href=.*?$SOMEVAR.*?li>\n//g" file.html
编辑实际上,那里的\n
可能会很奇怪。另一种方法是利用Bash的字符串连接。这应该有效:
perl -p -i -e 's/<li ><a href=.*?'$SOMEVAR'.*?li>\n//g' file.html
编辑2:我只是仔细看看你想要做什么,这有点危险。您使用.*
形式的.*?
,可能会比您想要的文本多得多。请改用{{1}}。我更新了上面的正则表达式。
答案 1 :(得分:1)
如果“SOMEVAR”确实是一个外部变量,您可以将其导出到环境并引用它:
SOMEVAR=whatever perl -p -i -e 's/<li ><a href=.*$ENV{SOMEVAR}.*li>\n//g' file.html