3

典型的な g++ コマンドラインでいくつかの変更を実行しようとしています。コンストラクトを探す正規表現を構築しようとしてい-o object_filename.oます。一致するパターンをテストするために、空の文字列を代入して sed で起動します。しかし、何も削除されないため、期待どおりに機能しません...

$echo "-o toto.o" | sed 's/-o [^ ]+//'
-o toto.o

4

2 に答える 2

2

-Eフラグがありません。それがなければ、+正規表現のメタ文字として扱われません:

$echo "-o toto.o" | sed -E 's/-o [^ ]+//'

上記は、予想どおり空の出力を生成します。

于 2012-11-23T13:37:42.700 に答える
1

私が正しく理解していれば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
于 2012-11-23T13:41:25.933 に答える