【问题标题】:sed - delete only words with vowelssed - 只删除带元音的单词
【发布时间】:2011-12-08 09:51:58
【问题描述】:

我正在尝试删除所有以元音开头的单词,如下所示。我拥有的 sed 命令仅在第一个单词有元音时删除它,而不是其他任何单词。我认为下面的边界标记并使用g 会捕获所有单词,但它没有这样做。如何获取所有带元音的单词?

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

【问题讨论】:

标签: regex bash sed substitution


【解决方案1】:

删除^

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

您不需要将其锚定到行首,只要您要求它位于单词边界即可。

【讨论】:

  • 谢谢迈克尔 - 我认为 ^ 必须输入才能让所有单词都以元音“开始” - 显然那时不是
【解决方案2】:
echo "Always take a Big Apple " | sed -r 's/\b[AEIOUaeiou]\w*//g' 

【讨论】:

  • 谢谢...你如何反转它以仅打印以元音开头的单词呢?我试过放进去!上面但它不起作用,但我认为这只会颠倒上面的规则?
  • @frodo: sed -r 's/\b[^AEIOUaeiou]\w*//g'
【解决方案3】:

这个 GNU sed 解决方案可能对您有用:

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

【讨论】:

    猜你喜欢
    • 2013-03-29
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    相关资源
    最近更新 更多