我正在尝试输入输入文件中唯一文字的计数。它位于$2
但是我似乎只能使用下面的数字得到1。谢谢你:)。
awk '{sub(/:.*/,"",$2)} !seen[$5]++{unq++} END{print unq}' input.txt > output.txt
input.txt中
chrX:48544112-48544235 **WAS**:exon.1;WAS:exon.4;WAS:exon.6 271.171
chr5:1282528-1282754 **TERT**:exon.1;TERT:exon.3 349.08
chrX:48547038-48547465 **WAS**:exon.1;WAS:exon.10;WAS:exon.2 42.459
所需的输出
2
答案 0 :(得分:5)
如果将字段分隔符重新定义为“冒号或空格”,则会更简单
Source: local data frame [6 x 7]
Groups: a [6]
a x1 x2 x3 x4 x5 x6
(fctr) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)
1 a 0.3333333 0.6666667 3 1.333333 1.666667 2
2 b 0.3333333 0.6666667 3 1.333333 1.666667 2
3 c 0.3333333 0.6666667 3 1.333333 1.666667 2
4 d 0.3333333 0.6666667 3 1.333333 1.666667 2
5 e 0.3333333 0.6666667 3 1.333333 1.666667 2
6 f 0.3333333 0.6666667 3 1.333333 1.666667 2
答案 1 :(得分:3)
替代非awk解决方案
tr ':' ' ' <file | cut -d' ' -f3 | sort | uniq -c | wc -l
答案 2 :(得分:1)
Perl版本有点难看,因为它使用$F[2]
vs awk $3
perl -F'[: ]' -lane '$n++ if ! $seen{$F[2]}++; END{print $n}' file