免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3070 | 回复: 7
打印 上一主题 下一主题

[文本处理] 求助_根据一个文件中的一列去另一个文件中提取相应的行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2019-04-20 11:40 |只看该作者 |倒序浏览
a.txt
LOC_Os01g01160
LOC_Os01g06454
LOC_Os01g17030
LOC_Os01g53020
b.txt
5        29142204        +        CHH        CTC        LOC_Os05g50810
5        29142215        +        CHH        CAA        LOC_Os05g50810
5        29142259        -        CHH        CTT        LOC_Os01g01160
5        29145615        +        CHH        CCA        LOC_Os01g01160
5        29145616        +        CHH        CAT        LOC_Os01g01160
5        29145869        -        CHH        CTA        LOC_Os05g50810
5        29145890        -        CHH        CAT        LOC_Os01g06454
5        29145912        -        CHH        CTT        LOC_Os01g06454
5        29145913        -        CHH        CCT        LOC_Os05g50810
5        29146309        +        CHH        CTA        LOC_Os01g17030
5        29146385        +        CHH        CAA        LOC_Os01g17030
5        29146426        +        CHH        CAA        LOC_Os05g50810
6        853213        -        CHH        CAC        LOC_Os01g53020
得到:
5        29142259        -        CHH        CTT        LOC_Os01g01160
5        29145615        +        CHH        CCA        LOC_Os01g01160
5        29145616        +        CHH        CAT        LOC_Os01g01160
5        29145890        -        CHH        CAT        LOC_Os01g06454
5        29145912        -        CHH        CTT        LOC_Os01g06454
5        29146309        +        CHH        CTA        LOC_Os01g17030
5        29146385        +        CHH        CAA        LOC_Os01g17030
6        853213        -        CHH        CAC        LOC_Os01g53020
自己弄的代码不知道怎么回事,总是不行,代码是:awk 'NR==FNR{n++;a[n]=$1}NR>FNR{if ($10 in a[n]) print $0}' a.txt b.txt      这样也不行:awk 'NR==FNR{a[$1]=$1}NR>FNR{if ($10 in a) print $0}' a.txt b.txt

论坛徽章:
0
2 [报告]
发表于 2019-04-20 18:20 |只看该作者
本帖最后由 jzsjm1002 于 2019-04-20 18:29 编辑

回复 1# hechao7021

  1. [root@vh100 awk]# awk 'NR==FNR{a[$0]} NR!=FNR{if($6 in a) print $0}' a b
  2. 5        29142259        -        CHH        CTT        LOC_Os01g01160
  3. 5        29145615        +        CHH        CCA        LOC_Os01g01160
  4. 5        29145616        +        CHH        CAT        LOC_Os01g01160
  5. 5        29145890        -        CHH        CAT        LOC_Os01g06454
  6. 5        29145912        -        CHH        CTT        LOC_Os01g06454
  7. 5        29146309        +        CHH        CTA        LOC_Os01g17030
  8. 5        29146385        +        CHH        CAA        LOC_Os01g17030
  9. 6        853213        -        CHH        CAC        LOC_Os01g53020
复制代码


论坛徽章:
0
3 [报告]
发表于 2019-04-20 18:51 |只看该作者
awk 'NR==FNR{file[$0]};NR>FNR{if($6 in file) print}' a.txt b.txt

论坛徽章:
0
4 [报告]
发表于 2019-04-21 13:13 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2019-04-22 15:01 |只看该作者
本帖最后由 hechao7021 于 2019-04-22 15:05 编辑

回复 3# Jackis

非常感谢!不知道为什么,如果换成两个大文件,就运行不出结果

论坛徽章:
0
6 [报告]
发表于 2019-04-22 15:08 |只看该作者
回复 5# hechao7021

我明白了,是不是第一个文件不能用.txt的后缀,我把后缀去掉就能输出结果了

论坛徽章:
0
7 [报告]
发表于 2019-04-23 21:54 |只看该作者
for i in `awk '{print $1}' a.txt`; do cat b.txt |grep $i ; done

论坛徽章:
0
8 [报告]
发表于 2019-04-24 13:20 |只看该作者
你们忘记了 grep -f a.txt b.txt
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP