2013-03-28 63 views
0

我有一个数组${myarr[@]}与字符串。 ${myarr[@]}基本上由行和每行的字组成。我需要计算这个数组中hello的出现次数。 我该怎么做?如何计算BASH数组中的项出现次数?

+0

'grep的-c'可以工作 – fedorqui

+0

如果有在1行上是多个“hello”,grep -c会将其计为1次。 – Tom

回答

2

试试这个:

for word in ${myarr[*]}; do 
    echo $word 
done | grep -c "hello" 
3

替代(无环路):

grep -o hello <<< ${myarr[*]} | wc -l 
+0

谢谢,真的很好,很干净的解决方案 – zhihong

2

无需外部程序:

count=0 
for word in ${myarr[*]}; do 
    if [[ $word =~ hello ]]; then 
     ((count++)) 
    fi 
done 

echo $count 
+1

大声笑,这也会工作... :-)每个人都有他/她的喜好。有人抱怨纯bash脚本比纯awk慢。有时我们喜欢纯粹的bash解决方案,为了兼容性。 :-) – anishsane