2017-06-06 69 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