我试过但没用:

count1=0;
count2=0;
for n in $*
do
for(i=1;i<='wc -l <$n';i++) do
        if [[ $i == *"[0-9]* ]]; then

                count1=count1+1;
        else
                count2=count2+1;
        fi
        done
done

count1表示包含整数的行,count2表示不包含整数的行。
输入:
yes 145 10
no no
10 20

输出:
count1=2, count2=1

最佳答案

使用grep -c计算与regexp匹配的行数。使用-v选项计算不匹配的行数。

count1=$(grep -c "[0-9]" "$@")
count2=$(grep -v -c "[0-9]" "$@")

10-06 01:26