AWK - 对从bash脚本作为参数传递的列求和

时间:2017-03-18 15:39:59

标签: variables awk parameters sum

我写了一个bash脚本,最终调用了这个:

awk 'BEGIN { print "Calculate sum of column: "} { sum += 5; print $0 } { print "Sum of column:", sum, "\n"}'

我想稍微编辑一下,因此要汇总的列将作为参数从bash包装器脚本传递。我试过了:

awk -v var="$column" 'BEGIN { print "Calculate sum of column: "} { sum += var; print $0 } { print "Sum of column:", sum, "\n"}'

但它基本上添加了相同的数字x NR,这是预期的。我不知道如何制作:

sum += var 

翻译为

sum += $var.

以便它捕获列号。

到目前为止,我已尝试过:

awk -v var="$column" 'BEGIN { PRINT "Sum:" } { sum += $var; } END { print sum } FILE_IN > FILE_OT

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

对不起,这是不可复制的。如果指定了列,则工作正常:

$ column=5;echo "a b c d 15 f" |awk -v var="$column" 'BEGIN { print "Sum:" } { sum += $var; } END { print sum }'
Sum:
15

PS:不要用大写字母书写。

使用文件;

$ cat file11
a b c d 15 f
$ column=5;awk -v var="$column" 'BEGIN { print "Sum:" } { sum += $var; } END { print sum }' file11
Sum:
15