如何在bash中找到单词的所有元音?
grep -o "a" <<<$1 | wc l
此命令仅查找a
,我想查找aeiou
。
例如:
car
我希望输出为1
computer
我希望输出为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
)的{},e
,i
,o
,u
。
由于""
返回执行的替换计数,它会告诉我们字符串中有多少个元音字母。
答案 2 :(得分:1)
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