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 回答