awk中每列的特殊字符数

时间:2014-09-12 19:07:16

标签: unix awk scripting

下面有一个逗号分隔的文件,包含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

如果可能的话,我想让这段代码尽可能动态,从某种意义上说,如果列数也发生变化,代码应该能够打印每列的*。

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块中,迭代列数并打印输出。