我有一个带有其分数的物种列表(每行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
您的问题还不是很清楚,但是我将尝试回答您的基本问题:
我想知道哪个物种至少获得4分
从您的示例代码中,我们知道:
SCORE_INFO
匹配的行感兴趣-999
因此下面的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次或以上