【发布时间】:2021-10-30 09:10:58
【问题描述】:
我正在尝试使用awk 比较两个文件,我想根据三个条件将它们组合起来。
- 第 2 列等于第 1 列
- 第 3 列大于或等于第 2 列
- 第 3 列小于或等于第 3 列
文件如下所示:
文件1
snp1 14 6371334
snp2 14 7928189
snp3 14 31819743
snp4 14 62133529
snp5 14 62616434
snp6 14 17544926
snp7 14 31639444
文件2
14 71159186 72228540 31
14 15732809 16677121 68
14 45003977 46299534 69
14 61965465 64286878 128
14 17378950 17833828 141
14 12877549 13217565 193
14 31369019 31785149 194
14 49883707 49905143 197
期望的输出是:
snp1 14 6371334 0
snp2 14 7928189 0
snp3 14 31819743 0
snp4 14 62133529 128
snp5 14 62616434 128
snp6 14 17544926 141
snp7 14 31639444 194
我试过了:
awk 'NR==FNR {a[$1]=$1;b[$2]=$2;c[$3]=$3;d[$4]=$4;next} {if($2 in a && $3 >= b[$2] && $3 <= c[$3]) print $1,$2,$3,d[$4]}' file2 file1
但它不是那样工作的。
有什么帮助吗?
谢谢!
【问题讨论】: