Bash 对文件中的数字进行求和

Bash 对文件中的数字进行求和

我有一系列包含 2 行的文件。第一行包含一个整数 (1-100),而第二行包含一个小数 (1.0000-99.9999)。我需要获取第一行的总和和第二行的平均值,即:

awk '{sum += $1} {avg / $2} NEXT {print sum} END {print avg}' *log

例子:

 1log
     20
     4.2
 2log
     34
     1.2

输出结果如下:

 54
 2.7

答案1

使用 awk,使用FNR变量来保存当前文件的记录号。

awk '
  FNR==1 {sum1 += $1}
  FNR==2 {sum2 += $1; count2++}
  END {print sum1; print (sum2/count2)}
' 1log 2log

或者

paste 1log 2log | {
  read n1 n2; echo $((n1+n2))
  read n1 n2; bc <<< "($n1+$n2)/2"
}

相关内容