2017-06-06 71 views
0

如何在bash中查找单词的所有元音?查找单词中的元音数量

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

该命令只找到a,我想找到aeiou

例如:

  • car我想要的输出为1
  • computer我想要的输出为3
+0

我想你正在寻找一种叫做“正则表达式”的东西 - GNU grep支持它们。 – mustaccio

+1

你有什么尝试? – hek2mgl

回答

2

尝试:

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

所以我正在使用echo她E要打印字,发送它的标准输出到awk通过管(|)作为标准输入,则与空字符串("")执行的信aeio全局替换,u
由于gsub返回执行的替换计数,它告诉我们字符串中有多少元音字母。

3

您可以结合-owc -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

的bash方法与GNU expr命令:

输入变量:

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