-4

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 insread od 1 etc)

4

1 回答 1

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
于 2013-06-28T07:52:32.930 回答