您好,我有一个文件,其中包含多次出现单词“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
- 如果第一个字段是
UNGROUPED
或UNMAPPED
,则将第二个字段添加到变量res
。 - 在文件末尾,将该变量与文件名一起打印。
- 其余行不匹配,因为 中的分隔符默认为空格
awk
。
输出:
My_file_name.txt 0.66