下面有一个逗号分隔的文件,包含3列
101,daf*s,HJ
102*,dft,GH*
103,hh*f,FF
10*J,ff*H,P
我想按每列计算*
的数量,并希望使用awk输出如下所示
Column 1:2
Column 2:3
Column 3:1
如果可能的话,我想让这段代码尽可能动态,从某种意义上说,如果列数也发生变化,代码应该能够打印每列的*。
答案 0 :(得分:3)
使用awk
:
awk -F, '{
for (i=1; i<=NF; i++) a[i]+=gsub(/[*]/, "", $i)
}
END {
for (i=1; i in a; i++) print "Column "i":"a[i]+0
}' file
Column 1:2
Column 2:3
Column 3:1
将字段分隔符设置为,
。遍历列并使用gsub
函数捕获每列的返回值并继续添加到数组中。
在END
块中,迭代列数并打印输出。