【发布时间】:2015-07-12 22:49:14
【问题描述】:
我正在使用 Perl 进行就地搜索和替换。我需要替换所有包含另一个单词的行中的所有单词。例如,仅删除包含PMPI_ 的行中的所有const。使用sed 我可以:
sed -i "/PMPI_/ s/const//g" file.c
但是,我需要多行功能,而 sed 似乎不是适合这项工作的工具。无论如何,我将 Perl 用于其他一切。我试过了
perl -pi -e "/PMPI_/ s/const//g" file.c
以及其他没有成功的变体。我只能在这个网站上找到 vim 正则表达式的等价物。
【问题讨论】:
-
sed 在多行上工作。
-
@AvinashRaj 是的,但从this answer 看来,Perl 似乎更适合这份工作。
-
@Alex:据我所知,
perl -pi -e "s/const//g if /PMPI_/" file.c或perl -pi -e "/PMPI_/ and s/const//g" file.c将满足您的需求。我不明白您对多行工作的引用:PMPI_一次只能出现在 一个 行中! -
@Borodin 是的,当然,这只是一个例子,我没有发布我正在使用的多行模式。
-
@Alex:所以对于 this 问题,您不需要多行,但是您正在寻找一个 确实 支持它的工具?我认为你应该澄清一下