You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Grep提取指定特征多行记录及CSV匹配需求

解决方案

需求一:提取包含指定AB(OS)字段的条目

针对以>开头、后续多行序列的文件,提取所有包含AB=EEE FFF(实际场景对应OS=Homo sapiens这类带空格的字段值)的完整条目,可使用awk命令实现:

awk -v RS='>' '/AB=EEE FFF/ {print ">"$0}' input_file.fasta

命令解释:

  • -v RS='>':将记录分隔符设为>,让每个条目(标题行+后续序列行)成为独立记录。
  • /AB=EEE FFF/:筛选包含目标字段模式的记录。
  • print ">"$0:补回记录缺失的开头>,保证输出格式与原文件一致。

实际场景中匹配OS=Homo sapiens时,只需将模式替换为/OS=Homo sapiens/即可。

需求二:提取CD(GN)字段匹配CSV列表的条目

假设CSV文件为gn_list.csv(每行一个GN值),主序列文件为input_file.fasta,可通过以下awk命令批量匹配并提取条目:

awk -v RS='>' 'NR==FNR {gn[$0]=1; next} match($0, /GN=([A-Z0-9]+)/, m) && gn[m[1]] {print ">"$0}' gn_list.csv input_file.fasta

命令解释:

  1. 处理CSV文件:
    • NR==FNR:处理第一个文件(gn_list.csv)时,将每行GN值存入数组gn标记为存在。
    • next:跳过后续逻辑,直接读取下一行。
  2. 处理主序列文件:
    • match($0, /GN=([A-Z0-9]+)/, m):用正则提取记录中的GN值,存入数组m(m[1]为匹配到的GN值)。
    • gn[m[1]]:检查提取的GN值是否在CSV列表的数组中。
    • print ">"$0:符合条件则输出完整条目,补回开头的>。

注意事项:

  • 若GN字段值包含下划线,可调整正则为/GN=([A-Z0-9_]+)/。
  • 若CSV存在空行,先过滤:awk 'NF' gn_list.csv > cleaned_gn_list.csv,再用清理后的文件执行命令。

内容的提问来源于stack exchange,提问作者Joy Zheng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 02:25:16