我試圖對典型的g ++命令行進行一些修改。我正在嘗試構造一個正則表達式來尋找-o object_filename.o
構造。爲了測試我的匹配模式,我使用空字符串作爲替換在sed中啓動它。但預期這是行不通的,因爲它消除了什麼......正則表達式替換
$echo "-o toto.o" | sed 's/-o [^ ]+//'
-o toto.o
我試圖對典型的g ++命令行進行一些修改。我正在嘗試構造一個正則表達式來尋找-o object_filename.o
構造。爲了測試我的匹配模式,我使用空字符串作爲替換在sed中啓動它。但預期這是行不通的,因爲它消除了什麼......正則表達式替換
$echo "-o toto.o" | sed 's/-o [^ ]+//'
-o toto.o
你缺少一個-E
標誌; without it, +
is not treated as a regex meta-character:
$echo "-o toto.o" | sed -E 's/-o [^ ]+//'
上面產生一個空輸出,如所預期。
如果我理解正確的話那麼sed -E 's/-o.+?\.o//'
應該做你想要什麼:
$ cat file
g++ .. -o object_filename.o some more options
g++ .. -o object1.o some more options
g++ .. -o foo_bar.o some more options
$ sed -E 's/-o.+?\.o//' file
g++ .. some more options
g++ .. some more options
g++ .. some more options
很大。我在linux上使用gnu sed。 「-r」在我的情況下似乎是正確的選擇。 –
是'-E'是'-r'的別名,但通常最好使用'-E'來實現可移植性! –