使用 awk 列出列中看到的所有值

使用 awk 列出列中看到的所有值

我有一个包含遗传信息的大型数据文件:

head Homo_sapiens.GRCh38.93.chr.onlyGene.gff3
1       ensembl gene    100000637       100000739       .       -       .       ID=ENSG00000202259;Name=RNU6-1318P;Name=ENSG00000202259
1       ensembl gene    101133153       101133339       .       +       .       ID=ENSG00000252765;Name=RF00424;Name=ENSG00000252765
1       ensembl gene    10163268        10163374        .       +       .       ID=ENSG00000201746;Name=RNU6-828P;Name=ENSG00000201746
1       ensembl gene    101728642       101728737       .       -       .       ID=ENSG00000252530;Name=RNU6-965P;Name=ENSG00000252530
1       ensembl gene    101859851       101859957       .       +       .       ID=ENSG00000252717;Name=RNU6-352P;Name=ENSG00000252717
1       ensembl gene    10298966        10299072        .       +       .       ID=ENSG00000199562;Name=RNU6-37P;Name=ENSG00000199562
1       ensembl gene    10306465        10306757        .       +       .       ID=ENSG00000264501;Name=RN7SL731P;Name=ENSG00000264501
1       ensembl gene    103523562       103523879       .       +       .       ID=ENSG00000222069;Name=RN7SKP285;Name=ENSG00000222069
1       ensembl gene    10616836        10617115        .       +       .       ID=ENSG00000243267;Name=RN7SL614P;Name=ENSG00000243267
1       ensembl gene    109100193       109100612       .       +       .       ID=ENSG00000278249;Name=SCARNA2;Name=ENSG00000278249

tail Homo_sapiens.GRCh38.93.chr.onlyGene.gff3
Y       havana  gene    9740584 9758476 .       +       .       ID=ENSG00000212855;Name=TTTY2;Name=ENSG00000212855
Y       havana  gene    9753156 9774289 .       -       .       ID=ENSG00000129845;Name=TTTY1;Name=ENSG00000129845
Y       havana  gene    9801153 9813245 .       +       .       ID=ENSG00000224075;Name=TTTY22;Name=ENSG00000224075
Y       havana  gene    9813315 9817513 .       +       .       ID=ENSG00000228379;Name=AC010891.1;Name=ENSG00000228379
Y       havana  gene    9831418 9846696 .       -       .       ID=ENSG00000229208;Name=RBMY2NP;Name=ENSG00000229208
Y       havana  gene    9868462 9868702 .       -       .       ID=ENSG00000274445;Name=AC006986.1;Name=ENSG00000274445
Y       havana  gene    9869664 9870781 .       +       .       ID=ENSG00000231874;Name=TSPY18P;Name=ENSG00000231874
Y       havana  gene    9905595 9908139 .       -       .       ID=ENSG00000187657;Name=TSPY13P;Name=ENSG00000187657
Y       havana  gene    9910798 9911962 .       +       .       ID=ENSG00000239225;Name=TTTY23;Name=ENSG00000239225
Y       havana  gene    9951553 9959423 .       +       .       ID=ENSG00000234950;Name=RBMY2OP;Name=ENSG00000234950

第 2 列显示数据来源(基因在哪个生物数据库上注册)。

有没有办法显示第 2 列中的所有值,但每个值仅显示一次?如ensembl, havana, foo, bar,如果可能的话,包含每个值的行数?

答案1

你可以使用这一切来完成AWK

awk '{A[$2]++}END{for(i in A)print i,A[i]}' Homo_sapiens.GRCh38.93.chr.onlyGene.gff3

输出将是

ensembl 10
havana 10

答案2

awk您可以尝试通过管道将(选择第二列)的输出通过sort和 (如@αГsнιη所述)uniq作为其--count选项,例如

awk '{print $2}' Homo_sapiens.GRCh38.93.chr.onlyGene.gff3 | sort | uniq -c

相关内容