将两列从一个文件匹配到另一个文件

时间:2018-03-18 04:37:37

标签: awk

如何使用awk代码我可以保存snp和exons仅当我的文件snp中的snp.csv列属于start和{{ 1 {} end文件。

我更愿意这样做。

对于exons.csv

中的每个值
  • 忽略Snp小于end
  • 中值的所有行
  • Snp大于end时,请检查Snp是否小于start
  • 如果是,对于输出,请合并来自data.frames
  • 的匹配行

这是Snp

snp.csv

我正在尝试将上述内容与 Chr Snp Gene 1 7 121851009 Gm15500 2 7 121851032 Gm15500 3 7 121851035 Gm15500 4 7 121851036 Gm15500 5 7 121851045 Gm15500 6 7 121851081 Gm15500

进行匹配
exons.csv

`

1 个答案:

答案 0 :(得分:0)

由于您的样品不清楚特别预期的输出,因此根据您的评论,此解决方案仅为:

awk 'FNR==NR && FNR>1{start[FNR]=$3;end[FNR]=$4;next} FNR>1{for(i in start){if(end[i]>$3 && start[i]<$3){print}}}' exons.csv  snp.csv

如果满足所有条件,则打印来自snp.csv的行,如果要从exons.csv打印行,则使用以下内容。

awk 'FNR==NR && FNR>1{complete[FNR]=$0;start[FNR]=$3;end[FNR]=$4;next} FNR>1{for(i in start){if(end[i]>$3 && start[i]<$3){print complete[i]}}}' exons.csv  snp.csv