典型的な g++ コマンドラインでいくつかの変更を実行しようとしています。コンストラクトを探す正規表現を構築しようとしてい-o object_filename.o
ます。一致するパターンをテストするために、空の文字列を代入して sed で起動します。しかし、何も削除されないため、期待どおりに機能しません...
$echo "-o toto.o" | sed 's/-o [^ ]+//'
-o toto.o
-E
フラグがありません。それがなければ、+
正規表現のメタ文字として扱われません:
$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