所以我有一个看起来像这样的文件:
1 4 6
2 5
3
我想只对特定列进行总结,让我们说第一和第三列。 输出应该如下所示:
7
2
3
我在变量中存储列数(参数):
x=${@:2}
(因为我省略了第一个传递的参数 $filename
)
如何在bash脚本中使用awk来计算这个? 我在想这样的事情
for i in ${@:2}
do
awk -v c=$i '{sum+=$c;print sum}' $fname
done
但它无法正常工作。
答案 0 :(得分:4)
这样的事情怎么样:
$ awk -v c="1 3" 'BEGIN{split(c,a)}{c=0;for(i in a) c+=$a[i]; print c}' file
7
2
3
说明:
$ awk -v c="1 3" ' # the desired column list space-separated
BEGIN {
split(c,a) # if not space-separated, change it here
}
{
c=0; # reusing col var as count var. recycle or die!
for(i in a) # after split desired cols are in a arr, ie. a[1]=1, a[2]=3
c+=$a[i]; # sum'em
print c # print it
}' file
编辑:将逗号分隔更改为空格分隔。
答案 1 :(得分:0)
awk '{print $1 + $3}' file
7
2
3