我试图对典型的g ++命令行进行一些修改。我正在尝试构造一个正则表达式来寻找-o object_filename.o
构造。为了测试我的匹配模式,我使用空字符串作为替换在sed中启动它。但预期这是行不通的,因为它消除了什么......正则表达式替换
$echo "-o toto.o" | sed 's/-o [^ ]+//'
-o toto.o
我试图对典型的g ++命令行进行一些修改。我正在尝试构造一个正则表达式来寻找-o object_filename.o
构造。为了测试我的匹配模式,我使用空字符串作为替换在sed中启动它。但预期这是行不通的,因为它消除了什么......正则表达式替换
$echo "-o toto.o" | sed 's/-o [^ ]+//'
-o toto.o
你缺少一个-E
标志; without it, +
is not treated as a regex meta-character:
$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
很大。我在linux上使用gnu sed。 “-r”在我的情况下似乎是正确的选择。 –
是'-E'是'-r'的别名,但通常最好使用'-E'来实现可移植性! –