Perl one liner用于在变量文件中查找和替换

use*_*351 10 perl command-line

我试图找到<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

有任何想法吗?谢谢.

Chr*_*uma 11

Bash只用双引号进行变量替换.

这应该工作:

perl -p -i -e "s/<li ><a href=.*?$SOMEVAR.*?li>\n//g" file.html
Run Code Online (Sandbox Code Playgroud)

编辑实际上,这可能与\n那里的行为很奇怪.另一种方法是利用Bash的字符串连接.这应该工作:

perl -p -i -e 's/<li ><a href=.*?'$SOMEVAR'.*?li>\n//g' file.html
Run Code Online (Sandbox Code Playgroud)

编辑2:我只是仔细看看你想要做什么,这有点危险.你正在使用贪婪的形式.*,它可以匹配比你想要的更多的文本.请.*?改用.我更新了上面的正则表达式.