使用 awk 计算位于不同行的数字之和

使用 awk 计算位于不同行的数字之和

以下行对位于第 2 行和第 #3 行、第 #4 行和第 #5 行、第 #6 行和第 #7 行等中的数字进行求和(因此,以连续方式求和)。

awk ' NR==1{$1=$1; print; next} !(NR%2){split($0,a);print; next} {for(i=1;i<=NF;i++) $i+=a[i]}1' file

好吧,我试图“概括”前面的代码,所以我需要做一些事情来对任何行求和,例如我需要做什么才能获得这样的总和:

  row #2 + row #3 + row #4 + ... + row #10 + row #14 + row #15 + row #19
  row #1 + row #11 + row #12 + row #13 + row #16 + ... +row #18 + row #20

答案1

如果您想手动指定相关的列号,然后只awk在最后打印出两个总和,您可以这样做:

awk 'NR == 2 || NR == 3 || ... {sum1 += $1}
     NR == 1 || NR == 11 || ... {sum2 += $1}
     END {print sum1; print sum2}' file

相关内容