如何计算 BASH 数组中的项目出现次数?

min*_*als 3 arrays bash

我有一个${myarr[@]}带字符串的数组。${myarr[@]}基本上由行组成,每行由单词组成。

world hello moon
weather dog tree
hello green plastic
Run Code Online (Sandbox Code Playgroud)

我需要计算hello这个数组中的出现次数。我该怎么做?

ani*_*ane 7

替代方案(无循环):

grep -o hello <<< ${myarr[*]} | wc -l
Run Code Online (Sandbox Code Playgroud)


cda*_*rke 6

无需外部程序:

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

echo $count
Run Code Online (Sandbox Code Playgroud)


Ans*_*ers 5

尝试这个:

for word in ${myarr[*]}; do
  echo $word
done | grep -c "hello"
Run Code Online (Sandbox Code Playgroud)