How to sum up every 10 lines and calculate average using AWK?

后端 未结 2 1512
轮回少年
轮回少年 2021-01-02 05:18

I have a file containing N*10 lines, each line consisting of a number. I need to sum up every 10 lines and then print out an average for every such group. I know it\'s doabl

2条回答
  •  隐瞒了意图╮
    2021-01-02 05:24

    May be something like this -

    [jaypal:~/Temp] seq 20 > test.file
    
    [jaypal:~/Temp] awk '
    {sum+=$1} 
    (NR%10==0){avg=sum/10;print $1"\nTotal: "sum "\tAverage: "avg;sum=0;next}1' test.file
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Total: 55   Average: 5.5
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Total: 155  Average: 15.5
    

    If you don't want all lines to be printed then the following would work.

    [jaypal:~/Temp] awk '
    {sum+=$1} 
    (NR%10==0){avg=sum/10;print "Total: "sum "\tAverage: "avg;sum=0;next}' test.file
    Total: 55   Average: 5.5
    Total: 155  Average: 15.5
    

提交回复
热议问题