![如何从多个“UNMAPPED”中找出特定的单词“UNMAPPED”](https://linux22.com/image/930025/%E5%A6%82%E4%BD%95%E4%BB%8E%E5%A4%9A%E4%B8%AA%E2%80%9CUNMAPPED%E2%80%9D%E4%B8%AD%E6%89%BE%E5%87%BA%E7%89%B9%E5%AE%9A%E7%9A%84%E5%8D%95%E8%AF%8D%E2%80%9CUNMAPPED%E2%80%9D.png)
您好,我有一个文件,其中包含多次出现单词“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