2011-12-08 31 views
2

我试图删除所有以元音开头的单词,如下所示。我有的sed命令只会删除第一个单词,如果它有一个元音,而不是其他的。我认为下面的边界标记和使用g会捕获所有单词,但它没有这样做。我怎样才能让它获得元音的所有单词?sed - 只删除元音的字

echo "Always take a Big Apple " | sed -r 's/\b^[AEIOUaeiou]\w*//g' 
+0

相关:[sed的 - 以元音开始打印的话只(http://stackoverflow.com/questions/8429901/sed -print-words-that-start-with-a-vowel-only) – razlebe

回答

5

删除^

sed -r 's/\b[AEIOUaeiou]\w*//g' 

你不需要将它锚定到行的开头,以至于你要求它是字边界上。

+0

谢谢迈克尔 - 我以为^必须让所有的单词“开始”与一个元音 - 显然不是然后 – frodo

1
echo "Always take a Big Apple " | sed -r 's/\b[AEIOUaeiou]\w*//g' 
+0

谢谢... ...怎么做你反转这只打印打印单词,然后开始与元音?我尝试过放入!上面但它不起作用,但我认为这只会颠倒上面的规则? – frodo

+0

@frodo:'sed -r's/\ b [^ AEIOUaeiou] \ w * // g'' –

1

这GNU sed的解决方案可能会为你工作:

echo "Always take a Big Apple " | sed 's/\<[aeiou]\w*//Ig'