You need to enable JavaScript to run this app. 如何使用awk/bash脚本比对含多分隔符的两个文件并输出匹配结果?
优惠活动
大模型
产品
解决方案
定价
更多

如何使用awk/bash脚本比对含多分隔符的两个文件并输出匹配结果?

比对实现方案

完全可以通过awk脚本实现,执行效率高,适合处理大基因组类文本文件,具体命令如下:

awk 'BEGIN{FS=OFS="\t"} NR==FNR{keys[$0]=1;next} {split($4,arr,/[,|]/);for(i in arr){if(keys[arr[i]]){print $1,$2,$3,arr[i]}}}' file2 file1

命令说明

  • BEGIN{FS=OFS="\t"}:预先设置输入、输出的分隔符均为制表符,匹配你提供的文件格式
  • NR==FNR{keys[$0]=1;next}:优先读取file2的全部内容,将每一行的关键词存入哈希表keys,读取完file2后再处理file1
  • split($4,arr,/[,|]/):将file1每行的第4列按|和,两个符号切割为数组,把注释字段里的所有基因ID/转录本ID单独拆分出来
  • 遍历切割后的数组,只要某个ID存在于提前存好的关键词哈希表中,就输出当前行的前3个字段+匹配到的ID

补充说明

如果file1某行的第4列包含多个file2里的关键词,命令会自动输出多条对应结果;如果需要对结果去重,可在命令末尾追加| sort -u。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 10:36:04