awk计算文件列中的行

时间:2015-09-29 21:17:54

标签: awk count

我有一个大文件,我想使用awk来计算特定列$5中的行,在:之前,只计算-uniq条目,但是似乎无法正确获取语法。谢谢你:)。

示例输入

chr1    955542  955763  +   AGRN:exon.1 1   0
chr1    955542  955763  +   AGRN:exon.1 2   0
chr1    955542  955763  +   AGRN:exon.1 3   0
chr1    955542  955763  +   AGRN:exon.1 4   1
chr1    955542  955763  +   AGRN:exon.1 5   1

awk -F: ' NR > 1 { count += $5 } -uniq' Input

所需的输出

1

2 个答案:

答案 0 :(得分:3)

$ awk -F'[ \t:]+' '{a[$5]=1;} END{for (k in a)n++; print n;}' Input
1
  • -F'[ \t:]+'

    这告诉awk使用空格,制表符或冒号作为字段分隔符。

  • a[$5]=1

    当我们遍历每一行时,会为遇到的a的每个值在关联数组$5中添加一个条目。

  • END{for (k in a)n++; print n;}

    我们读完文件后,会计算关联数组a中的键数并打印总数。

答案 1 :(得分:3)

惯用的便携式awk方法:

config.secret_key = ENV['DEVISE_SECRET_KEY'] if Rails.env.production?

简短但只有傻瓜(由$ awk '{sub(/:.*/,"",$5)} !seen[$5]++{unq++} END{print unq}' file 1 提供)方法:

length(array)