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

如何按参考文件顺序匹配目标文件并输出匹配行及其后一行

序列提取操作实现方案

核心思路

先遍历目标文件(target),将所有序列ID和对应的序列内容关联存储到哈希结构中,再遍历参考文件(ref),按参考文件的ID顺序读取并输出对应的ID和序列,即可严格保证顺序符合要求。

具体实现

直接使用awk单命令即可完成需求:

awk 'FNR==NR{
    if($0~/^[NX]P_/){
        id=$0
        a[id]=$0
        getline
        b[id]=$0
    }
    next
}
{
    print a[$1]
    print b[$1]
}' target ref

命令说明

  • 第一阶段处理第一个输入文件target:
    • 匹配以NP_或XP_开头的行,判定为序列ID行
    • 暂存当前ID,将ID行内容存入哈希a
    • 调用getline读取下一行的序列内容,存入哈希b,键与a保持一致为当前ID
  • 第二阶段处理第二个输入文件ref:
    • 按ref的行顺序逐个读取ID,依次输出哈希a中存储的ID行、哈希b中存储的对应序列行

如果需要匹配你给出的输出示例中每行前置4个空格的格式,修改print部分即可:

awk 'FNR==NR{
    if($0~/^[NX]P_/){
        id=$0
        a[id]=$0
        getline
        b[id]=$0
    }
    next
}
{
    print "    "a[$1]
    print "    "b[$1]
}' target ref

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:45:03