Linux:计算每列中1's
的出现次数
我有一个包含以下内容的文件
0 0 1 0 0
0 0 1 1 1
0 1 1 1 0
1 0 1 0 0
现在,我想计算每列中的1's
,并且需要将其写入文件及其列号。
所以我的预期是,
1 1
2 1
3 4
4 2
5 1
其中第一列代表列位置(在给定示例中为1到5)
,第二列是1's
各栏
我的输出要求发生了变化:
5 1
4 1
3 4
2 2
1 1
需要以相反的顺序打印列号(5个内线1等)
答案 0 :(得分:0)
awk是更好的工具:
awk 'NF>0{for (i=1; i<=NF; i++) if($i==1) a[NR]++;}
END{for(i=1; i<=length(a); i++) print i, a[i]}' file
编辑1:要在每列中计算1:
awk 'NF>0{for (i=1; i<=NF; i++) if($i==1) a[i]++;}
END{for(i=1; i<=length(a); i++) print i, a[i]}' file
编辑2:要在每列中计算1,请按相反顺序打印:
awk 'NF>0{for (i=1; i<=NF; i++) if($i==1) a[i]++;}
END{for(i=length(a); i>=1; i--) print i, a[i]}' file