Chinaunix
标题:
如何判断A文件数值是否在B文件的数值区间之中
[打印本页]
作者:
chenjiali1
时间:
2013-10-15 13:51
标题:
如何判断A文件数值是否在B文件的数值区间之中
大家好,我有两个文件,分别如下:
A文件:
chr1 2
chr1 72
chr3 42
chr4 12
B文件
chr1 1 2
chr1 72 275
chr3 25 50
chr4 6 10
如果A文件中的第二列处于B文件的某行的2,3列数字之间(当然第一列要是一致的),把这些行合并输出,结果如下
chr1 2 chr1 1 2
chr1 72 chr1 72 275
chr3 42 chr3 25 50
请问用awk如何实现,我自己写的老是提示语法错误,谢谢大家。
作者:
Shell_HAT
时间:
2013-10-15 13:55
把你写的贴出来看看
作者:
yestreenstars
时间:
2013-10-15 13:58
本帖最后由 yestreenstars 于 2013-10-15 14:17 编辑
如果两个文件是对应的话:
[root@localhost ~]# awk 'NR==FNR{a[NR]=$2;b[NR]=$0;next}a[FNR]>=$2&&a[FNR]<=$3{print b[FNR]"\t"$0}' a b
chr1 2 chr1 1 2
chr1 72 chr1 72 275
chr3 42 chr3 25 50
[root@localhost ~]#
复制代码
作者:
关阴月飞
时间:
2013-10-15 14:10
回复
1#
chenjiali1
awk 'FNR==NR{a[$1]++;b[$1,a[$1]]=$2;next}{for(i=1;i<=a[$1];i++)if(b[$1,i]>=$2 && b[$1,i]<=$3)print $1,b[$1,i],$0}' a b
复制代码
作者:
li0924
时间:
2013-10-15 14:13
awk 'NR==FNR{a[$1,FNR]=$0;b[$1,FNR]=$2;next}{if(a[$1,FNR]){if(b[$1,FNR]>=$2 && b[$1,FNR]<=$3)print a[$1,FNR],$0}}' A B
复制代码
作者:
WilliBhamlll
时间:
2013-10-15 14:31
awk 'NR==FNR{a[++i]=$2;next}a[FNR]>=$2&&a[FNR]<=$3{print $1"\t"a[FNR]"\t"$0}' a b
复制代码
作者:
chenjiali1
时间:
2013-10-15 14:42
非常感谢大家
作者:
elu_ligao
时间:
2013-10-15 15:03
awk 'NR==FNR{a[++i]=$1; b[++j]=$2; next}a[FNR]==$1&&b[FNR]>=$2&&b[FNR]<=$3{print a[FNR]"\t"b[FNR]"\t"$0}' A B
作者:
LikeLx
时间:
2013-10-15 15:58
回复
4#
关阴月飞
又学习了一种思路
作者:
expert1
时间:
2013-10-15 16:50
回复
1#
chenjiali1
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1800295
论坛上问了无数次的月经问题,只要你关注论坛。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2