正则表达式替换

时间:2012-11-23 13:32:40

标签: regex linux sed gnu

我正在尝试对典型的g ++命令行进行一些修改。我正在尝试构建一个正在寻找-o object_filename.o构造的正则表达式。为了测试我的匹配模式,我在sed中使用空字符串作为替换来启动它。但它没有按预期工作,因为它没有删除任何东西......

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

2 个答案:

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