Perl regexp取代?

时间:2012-12-04 23:59:25

标签: regex perl

我正在检查是否可以替换这样的包含:

#include <pathFoo/whatever.H>

使用:

#include "whatever.H"

这样做我会使用-i开关,但要检查我正确地执行它我只是使用不带-i的-p开关。我有以下命令:

perl -p -e 's/<pathFoo\/\(.*\)>/"$1"' thefile

但这不太合适,我不确定哪个部分关闭了?

4 个答案:

答案 0 :(得分:4)

你不想逃避麻痹,即:

perl -p -e 's/<pathFoo\/(.*)>/"$1"/' thefile

应该适合你。

另请注意结尾/

答案 1 :(得分:1)

perl -i~ -pe's!<pathFoo/(.*)>!"$1"!' file

以下更安全:

perl -i~ -pe's!#include\s+\K<pathFoo/(.*)>!"$1"!' file

答案 2 :(得分:1)

自TIMTOWTDI以来,这里是双重替换。或者更确切地说是替换和音译:

perl -pe 's|^#include\s+<\KpathFoo/|| && tr/<>/""/'

因此,首先删除pathFoo/部分,如果成功,则将<>字符音译为引号。

答案 3 :(得分:0)

我认为这会让你到达那里:

perl -pi -e 's{#include[ ]+<.+?/([^/]+)>}{#include "$1"}g' file