我正在尝试对典型的g ++命令行进行一些修改。我正在尝试构建一个正在寻找-o object_filename.o
构造的正则表达式。为了测试我的匹配模式,我在sed中使用空字符串作为替换来启动它。但它没有按预期工作,因为它没有删除任何东西......
$echo "-o toto.o" | sed 's/-o [^ ]+//'
-o toto.o
答案 0 :(得分:2)
您错过了-E
标志; without it, +
is not treated as a regex meta-character:
$echo "-o toto.o" | sed -E 's/-o [^ ]+//'
如上所述,上面产生一个空输出。
答案 1 :(得分: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