我正在寻找 <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
有什么想法吗?谢谢。
最佳答案
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:我只是仔细看看你想要做什么,这有点危险。您正在使用 greedy
.*
的表格,它可以匹配比您想要的更多的文本。使用 .*?
相反。我更新了上面的正则表达式。
关于Perl 一个类轮用变量在文件中查找和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7922524/