我檢查,看看我是否可以取代包括這樣的:Perl正則表達式替換?
#include <pathFoo/whatever.H>
有:
#include "whatever.H"
這樣做,我會使用-i選項,但要檢查我做的它正確,我只是使用不帶-i的-p開關。我有以下命令:
perl -p -e 's/<pathFoo\/\(.*\)>/"$1"' thefile
但這不是很工作,我不完全確定哪個部分是關閉的?
我檢查,看看我是否可以取代包括這樣的:Perl正則表達式替換?
#include <pathFoo/whatever.H>
有:
#include "whatever.H"
這樣做,我會使用-i選項,但要檢查我做的它正確,我只是使用不帶-i的-p開關。我有以下命令:
perl -p -e 's/<pathFoo\/\(.*\)>/"$1"' thefile
但這不是很工作,我不完全確定哪個部分是關閉的?
你不想逃避括號,即:
perl -p -e 's/<pathFoo\/(.*)>/"$1"/' thefile
應該爲你工作。
另請注意結尾/
。
perl -i~ -pe's!<pathFoo/(.*)>!"$1"!' file
以下是安全的:
perl -i~ -pe's!#include\s+\K<pathFoo/(.*)>!"$1"!' file
我認爲這將讓你有:
perl -pi -e 's{#include[ ]+<.+?/([^/]+)>}{#include "$1"}g' file
由於TIMTOWTDI,這裏是一個雙重替代。或者更確切地說,替代和音譯:
perl -pe 's|^#include\s+<\KpathFoo/|| && tr/<>/""/'
所以,只要先取下pathFoo/
部分,如果成功,那麼<>
字符音譯爲引號。