查找单词中的元音数量

时间:2017-06-06 15:27:00

标签: bash grep

如何在bash中找到单词的所有元音?

grep -o "a"  <<<$1 | wc l

此命令仅查找a,我想查找aeiou

例如:

  • for car我希望输出为1
  • for computer我希望输出为3

3 个答案:

答案 0 :(得分:3)

您可以将-o(仅保留匹配项)与wc -l结合使用,并使用括号表达式匹配所有元音:

$ grep -o '[aeiou]' <<< car | wc -l
1
$ grep -o '[aeiou]' <<< computer | wc -l
3

作为一个函数(注意引用$1以防止分词和路径名扩展):

vowcount () { grep -o '[aeiou]' <<< "$1" | wc -l; }

一样使用
$ vowcount alphabet
3

答案 1 :(得分:2)

尝试:

echo "computer" | awk '{print gsub(/[aeiou]/,"")}'

所以我在这里使用echo打印单词,通过竖线(awk)将标准输出发送到|作为标准输入,然后执行全局替换字母{{1带有空字符串(a)的{},eiou
由于""返回执行的替换计数,它会告诉我们字符串中有多少个元音字母。

答案 2 :(得分:1)

使用GNU expr命令

bash 方法:

输入变量:

v1="computer"
v2="car"
expr length "${v1//[^aeuoi]}"
3
expr length "${v2//[^aeuoi]}"
1
  • ${v2//[^aeuoi]} - 替换/删除所有非元音字符

  • expr length STRING - 评估 STRING的长度

更兼容的变体看起来像:

vowels="${v1//[^aeuoi]}"
echo "${#vowels}"
3