2011-06-10 83 views
1

我想玩sed,改變所有;在sed中的正則表達式來替換C++包括

#include "X" 

到:

#include <X> 

不過,我似乎無法找到一個方法來做到這一點! - 這是我迄今所做的:

sed -i 's/#include ".*"/#include <.*>/g' filename 

我想我需要一個變量來保存包含的,我只是不知道如何「*」!

回答

3

是的,你做的。正則表達式使用()來保存匹配內容和\ 1來檢索它。如果您使用多個()集合,則第二個匹配位於\ 2中,依此類推。

sed -e 's/#include "\(.*\)"/#include <\1>/g' < filename 

會做你所需要的。

2

嘗試:

sed 's/#include "\(.*\)"/#include <\1>/' x.cpp 
2

嘗試:

sed -i 's/#include "\(.*\)"/#include <\1>/g' filename