Perl 一个类轮用变量在文件中查找和替换

标签 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}\$SOMEVARFIND="<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/

相关文章:

java - 从 Java 执行命令而不是等待结果

arrays - 求多个数组的平均值

perl - 如何在 Perl 中检查数组的所有元素是否相同?

perl - 我如何在 bash 或 Perl 中比较一个数字和一个范围?

Windows 命令行 - 根据 Ping 延迟选择服务器

delphi - 如何 ShellExecute 一个程序,然后发送它的命令行文本

android - 无法在命令行中运行 android 命令

regex - 在 Perl 中是否有比正则表达式更好的数据验证方法?

perl - 为什么我的解包打印出错误的值?

MySQL - 如何更改所有数据库中的列数据类型?