计算一行中的出现次数并将结果推送到列

时间:2016-09-23 16:26:02

标签: unix awk

我有一个相当简单的问题。在file1中,我想计算每行存在多少H,计算总和,并将计数和行号打印为相同或不同文件末尾的两列。

输入:

h1 h2 h3 h4
A  H  H  B
B  H  C  H
A  A  A  H

期望的输出:

h1 h2 h3 h4 count rowid
A  H  H  B      2     1
B  H  C  H      2     2
A  A  A  H      1     3

这是我到目前为止所拥有的:

awk -F'\t' 'BEGIN{print $0 "count", "rowid"} {print gsub(/H/,"") FS NR}' file1.txt >out.txt

我的错误在哪里以及如何更改以使其有效?

1 个答案:

答案 0 :(得分:1)

awk救援!

$ awk 'NR==1{print $0, "count", "rowid"; next} 
            {print $0, gsub("H","H"), NR-1}' file | 
  column -t

h1  h2  h3  h4  count  rowid
A   H   H   B   2      1
B   H   C   H   2      2
A   A   A   H   1      3