Как я могу указать количество звездочек как количество чисел в awk? - PullRequest
0 голосов
/ 08 апреля 2020

Я новичок в awk и не знаю, есть ли способ поставить звездочку после числа, сколько людей получили это среднее, и есть еще вопросы, есть ли лучший способ проверить среднее вместо if (также переключиться)?

ввод текста-

Peter 70 70 70
Andras 85 85 85 85 85
Maria 89
Bea 88 88
Zoltan 63 65 63 65 
Zsolt 95 95

Вот мой код awk:

    {
for( i=2; i<=NF; ++i){
    p[$1]+=$i;   
}

count[$1]+=NF-1;
}
END{
for(n in p){
an=p[n]/count[n];
    if(an<=9){
        a+=1;
    }
    if(an>=10 && an<=19){
        b+=1;
    }
    if(an>=20 && an<=29){
        c+=1;
    }
    if(an>=30 && an<=39){
        d+=1;
    }
    if(an>=40 && an<=49){
        e+=1;
    }
    if(an>=50 && an<=59){
        f+=1;
    }
    if(an>=60 && an<=69){
        g+=1;
    }
    if(an>=70 && an<=79){
        h+=1;
    }
    if(an>=80 && an<=89){
        k+=1;
    }
    if(an>=90 && an<=99){
        l+=1;
    }
    if(an>=100){
        m+=1;
    }
}
printf("0 -   9: %d\n",a);
printf("10 - 19: %d\n",b);
printf("20 - 29: %d\n",c);
printf("30 - 39: %d\n",d);
printf("40 - 49: %d\n",e);
printf("50 - 59: %d\n",f);
printf("60 - 69: %d\n",g);
printf("70 - 79: %d\n",h);
printf("80 - 89: %d\n",k);
printf("90 - 99: %d\n",l);
printf("100: %d\n",m);


}

Этот результат I есть сейчас (img)

но мне нужен этот способ (img)

1 Ответ

0 голосов
/ 08 апреля 2020

Ваша лучшая ставка может быть просто напечатана в oop:

    {
for( i=2; i<=NF; ++i){
    p[$1]+=$i;   
}

count[$1]+=NF-1;
}
END{
for(n in p){
an=p[n]/count[n];
    if(an<=9){
        a+=1;
    }
    if(an>=10 && an<=19){
        b+=1;
    }
    if(an>=20 && an<=29){
        c+=1;
    }
    if(an>=30 && an<=39){
        d+=1;
    }
    if(an>=40 && an<=49){
        e+=1;
    }
    if(an>=50 && an<=59){
        f+=1;
    }
    if(an>=60 && an<=69){
        g+=1;
    }
    if(an>=70 && an<=79){
        h+=1;
    }
    if(an>=80 && an<=89){
        k+=1;
    }
    if(an>=90 && an<=99){
        l+=1;
    }
    if(an>=100){
        m+=1;
    }
}
printf("0 -   9: %d",a);for(i=0;i<a;i++) printf "* "; printf "\n";
printf("10 - 19: %d",b);for(i=0;i<b;i++) printf "* "; printf "\n";
printf("20 - 29: %d\n",c);
printf("30 - 39: %d\n",d);
printf("40 - 49: %d\n",e);
printf("50 - 59: %d\n",f);
printf("60 - 69: %d\n",g);
printf("70 - 79: %d\n",h);
printf("80 - 89: %d\n",k);
printf("90 - 99: %d\n",l);
printf("100: %d\n",m);


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...