Perl - 仅在与另一个模式匹配的行中替换模式

时间:2015-07-12 13:31:53

标签: regex perl

我正在进行就地搜索&用Perl替换。我需要替换包含另一个单词的所有行中的所有单词。例如,仅在包含const的行中删除所有PMPI_。使用sed,我可以:

sed -i "/PMPI_/ s/const//g" file.c

然而,我需要多线功能,而且sed似乎并不适合这项工作。无论如何,我还在使用Perl。我试过了

perl -pi -e "/PMPI_/ s/const//g" file.c

其他变化没有成功。我只能找到与此网站相同的vim正则表达式。

1 个答案:

答案 0 :(得分:3)

语法为:

perl -pi -e "s/const//g if /PMPI_/" file

注意:您说您需要多线功能。我不认为您正在寻找slurp模式(加载整个文件),但您也可以使用-00选项的段落工作:

echo 'PMPI_ const
const const' | perl -00 -p -e "s/const//g if /PMPI_/"