如何用awk筛选Linux中以'viridae'结尾的分类单元?
用awk提取分号分隔数据中以viridae结尾的分类单元
问题背景
有如下分号分隔的分类数据:
Viruses; Riboviria; Orthornavirae; Negarnaviricota; Polyploviricotina; Insthoviricetes; Articulavirales; Orthomyxoviridae; Alphainfluenzavirus Viruses; Riboviria; Orthornavirae; Pisuviricota; Pisoniviricetes; Sobelivirales; Solemoviridae; Polerovirus
需要提取其中所有以viridae结尾的分类单元,且这类单元在每行中的位置不固定,要求用Linux下的awk工具实现。
解决方案
可以用以下awk命令直接提取目标内容:
awk -F'; ' '{for(i=1;i<=NF;i++){if($i ~ /viridae$/) print $i}}' input.txt
命令解释
-F'; ':指定输入行的字段分隔符为分号加空格,确保每个分类单元被正确拆分。for(i=1;i<=NF;i++):遍历当前行的所有字段(NF代表当前行的字段总数)。if($i ~ /viridae$/):通过正则表达式匹配字段是否以viridae结尾($锚定字段末尾,避免匹配包含viridae但不是结尾的内容)。print $i:输出符合条件的字段。
运行结果
对示例数据执行上述命令后,输出如下:
Orthomyxoviridae Solemoviridae
内容的提问来源于stack exchange,提问作者Bio_farmer
相关产品推荐
相关产品推荐

