Chinaunix
标题:
请教:awk如何根据文件1中的关键字提取文件2中的内容?
[打印本页]
作者:
Ienovo_qq
时间:
2013-09-11 11:07
标题:
请教:awk如何根据文件1中的关键字提取文件2中的内容?
文件1:
4238
4240
文件2
4237 MY4237A
4237 MY4237B
4238 MY4238A
4238 MY4238B
4238 MY4238C
4239 MD4239A
4240 MY4240A
4240 MY4240B
4240 MY4240C
4240 MD4240A
4240 MD4240B
4240 MD4240C
要求根据文件1中的字段1为关键字提取文件2中的内容,输出如下:
4238 MY4238A
4238 MY4238B
4238 MY4238C
4240 MY4240A
4240 MY4240B
4240 MY4240C
4240 MD4240A
4240 MD4240B
4240 MD4240C
请各位大侠支招,先谢谢了。
作者:
关阴月飞
时间:
2013-09-11 11:08
grep -wf file1 file2
复制代码
作者:
Ienovo_qq
时间:
2013-09-11 11:10
回复
2#
关阴月飞
这么快,谢谢,能用awk实现吗?
作者:
关阴月飞
时间:
2013-09-11 11:11
回复
3#
Ienovo_qq
awk 'FNR==NR{a[$0]=$0;next}a[$1]' file1 file2
复制代码
作者:
Ienovo_qq
时间:
2013-09-11 11:16
回复
4#
关阴月飞
经测试,能满足要求,多谢多谢。
作者:
Ienovo_qq
时间:
2013-09-11 11:26
又是用的数组,我理解一下:FNR==NR{a[$0]=$0}读文件1,数组a[4238]=4238,a[4240]=4240; next}a[$1] next读文件2,a[$1]以文件2的第一列进行匹配,省略print $0。不知对不对?
作者:
li0924
时间:
2013-09-11 13:53
awk 'NR==FNR{a[$1]=1;next}{if(a[$1]==1)print $0}'
作者:
li0924
时间:
2013-09-11 14:00
回复
4#
关阴月飞
想法很独特!赞!
作者:
关阴月飞
时间:
2013-09-11 14:41
本帖最后由 关阴月飞 于 2013-09-11 14:42 编辑
@li0924
回复
6#
Ienovo_qq
”又是用的数组,我理解一下:FNR==NR{a[$0]=$0}读文件1,数组a[4238]=4238,a[4240]=4240; next}a[$1] next读文件2,
a[$1]以文件2的第一列进行匹配,省略print $0 “
最后的a[$1] 是用来做断判的:
a[$1] ==》 if(a[$1]) 即 a[$1] 不为空值 或 0 则打印 $0
为了保险上面四楼代码得改一下(借签7楼用法,可避$0值为0时会出现错误):
awk 'FNR==NR{a[$0]=1;next}a[$1]' file1 file2
复制代码
作者:
Ienovo_qq
时间:
2013-09-11 14:44
各位高手,佩服佩服。
作者:
howge
时间:
2013-09-22 16:21
学习了!
回复
9#
关阴月飞
作者:
fh21_xuejinlian
时间:
2016-05-19 17:20
awk 'NR==FNR{a[$1]=$1}NR!=FNR{if(a[$1])print $0}' file1 file2
作者:
hechao7021
时间:
2019-04-20 16:57
回复
1#
Ienovo_qq
我的数据跟楼主的类似,用上面的代码都输不出数据,求赐教第一个文件:a.txt
LOC_Os01g01160
LOC_Os01g06454
LOC_Os01g17030
LOC_Os01g53020
第二个文件:b.txt
LOC_Os05g50810 5 29142204 + CHH CTC
LOC_Os05g50810 5 29142215 + CHH CAA
LOC_Os01g01160 5 29142259 - CHH CTT
LOC_Os01g01160 5 29145615 + CHH CCA
LOC_Os01g01160 5 29145616 + CHH CAT
LOC_Os05g50810 5 29145869 - CHH CTA
LOC_Os01g06454 5 29145890 - CHH CAT
LOC_Os01g06454 5 29145912 - CHH CTT
LOC_Os05g50810 5 29145913 - CHH CCT
LOC_Os01g17030 5 29146309 + CHH CTA
LOC_Os01g17030 5 29146385 + CHH CAA
LOC_Os05g50810 5 29146426 + CHH CAA
LOC_Os01g53020 6 853213 - CHH CAC
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2