如何从多个“UNMAPPED”中找出特定的单词“UNMAPPED”

如何从多个“UNMAPPED”中找出特定的单词“UNMAPPED”

您好,我有一个文件,其中包含多次出现单词“UNGROUPED”的行。但我想提取第一行“UNGROUPED”和第一行“UNMAPPED”(在文件中仅出现一次)。我可以用“grep”来做吗?以下是可重现的示例:

UNMAPPED    0.445
UNGROUPED   0.215
UNGROUPED|g__Agathobaculum.s__Agathobaculum_butyriciproducens   0.001
UNGROUPED|g__Akkermansia.s__Akkermansia_muciniphila 0
UNGROUPED|g__Alistipes.s__Alistipes_finegoldii  0
UNGROUPED|g__Alistipes.s__Alistipes_putredinis  0.001

此外,如果可以添加行尾的数值并打印结果,那就太好了。

谢谢

答案1

尝试awk

awk '$1=="UNGROUPED" || $1=="UNMAPPED" {res+=$2} END {print FILENAME, res}' My_file_name.txt
  • 如果第一个字段是UNGROUPEDUNMAPPED,则将第二个字段添加到变量res
  • 在文件末尾,将该变量与文件名一起打印。
  • 其余行不匹配,因为 中的分隔符默认为空格awk

输出:

My_file_name.txt 0.66

相关内容