linux:计算每列中1的出现次数

时间:2013-06-28 07:43:56

标签: linux

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等)

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