我正在检查是否可以替换这样的包含:
#include <pathFoo/whatever.H>
使用:
#include "whatever.H"
这样做我会使用-i开关,但要检查我正确地执行它我只是使用不带-i的-p开关。我有以下命令:
perl -p -e 's/<pathFoo\/\(.*\)>/"$1"' thefile
但这不太合适,我不确定哪个部分关闭了?
答案 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