【发布时间】:2014-11-07 00:54:07
【问题描述】:
我在下面有一个逗号分隔的文件,包含 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
如果可能的话,我想让这段代码尽可能动态,如果列数也发生变化,代码应该能够按每列打印 * 的计数。
【问题讨论】:
我在下面有一个逗号分隔的文件,包含 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
如果可能的话,我想让这段代码尽可能动态,如果列数也发生变化,代码应该能够按每列打印 * 的计数。
【问题讨论】:
使用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 块中,遍历列数并打印输出。
【讨论】: