我有一个大文件,我想使用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
答案 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)