如果任何单词在列表中至少出现4次,我想打印它。我该如何使用awk?

问题描述 投票:0回答:1

我有一个带有其分数的物种列表(每行1种,每行1分数),其中一些物种出现不止一次(即,它们的得分超过一个)。我想知道哪个物种至少获得4分。

在UNIX bash中。

grep SCORE_INFO reformatted_output | grep -v '\-999' | uniq -c | awk '$4>=4{print}' 

(grep-ed SCORE_INFO,因为还有其他带有其他信息的行]

某些打印出来的结果仅打印2或3次,所以不起作用?

输入示例:

================================================
INPUT_LINE_NUMBER 0
FULL_LINE 0  Candidatus Blochmannia floridanus
GENUS 0 Blochmannia
BINOMIAL_SPECIES 0 Blochmannia floridanus
EXTRA_INFO 0 
SCORE_INFO 0 Blochmannia floridanus -999
================================================
================================================
INPUT_LINE_NUMBER 1
FULL_LINE 1  Buchnera aphidicola str. Bp (Baizongia pistaciae)
GENUS 1 Buchnera
BINOMIAL_SPECIES 1 Buchnera aphidicola
EXTRA_INFO 1 str.Bp(Baizongiapistaciae)
SCORE_INFO 1 Buchnera aphidicola -999
================================================
================================================
INPUT_LINE_NUMBER 2
FULL_LINE 2  Buchnera aphidicola str. 5A (Acyrthosiphon pisum) SCORE 15.22082
GENUS 2 Buchnera
BINOMIAL_SPECIES 2 Buchnera aphidicola
EXTRA_INFO 2 str.5A(Acyrthosiphonpisum)
SCORE_INFO 2 Buchnera aphidicola 15.220829

输出示例(当前正在获取):

1 SCORE_INFO 124 Wigglesworthia glossinidia 55.224537
1 SCORE_INFO 125 Xenorhabdus bovienii 25.088634
1 SCORE_INFO 128 Yersinia enterocolitica 44.985457
1 SCORE_INFO 129 Yersinia pestis 12.072053
1 SCORE_INFO 131 Yersinia pestis 84.918046
1 SCORE_INFO 133 Yersinia pestis 79.520988
1 SCORE_INFO 139 Yersinia pestis 49.734360
1 SCORE_INFO 142 Yersinia pseudotuberculosis 34.544385
1 SCORE_INFO 143 Yersinia pseudotuberculosis 77.746483
unix awk count grep uniq
1个回答
0
投票

您的问题还不是很清楚,但是我将尝试回答您的基本问题:

我想知道哪个物种至少获得4分

从您的示例代码中,我们知道:

  1. 我们对与SCORE_INFO匹配的行感兴趣
  2. 我们不在乎分数是否为-999
  3. 种类是位于第二个字段和最后一个字段之间的字符串。

因此下面的awk行将为您提供出现4次或多次的名称列表:

awk '!/^SCORE_INFO/ { next }
      ($NF == -999) { next }
      { key=""; for(i=3;i<NF;++i) key=(key=="" ? $i : key" "$i) }
      (++a[key] == 4) { print key }' file

这将返回类似:

Yersinia pestis
Buchnera aphidicola

如果这两个名字出现4次或以上

© www.soinside.com 2019 - 2024. All rights reserved.