免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 明瞳狐狸
打印 上一主题 下一主题

[文本处理] 根据相同列查找某一行 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2014-08-19 14:14 |只看该作者
回复 5# klainogn
恩,经过实践,你的脚本是对的,谢谢~

   

论坛徽章:
0
12 [报告]
发表于 2014-08-19 14:16 |只看该作者
回复 6# love_shift
我试了,可是没有结果,这是为什么?

   

论坛徽章:
5
白羊座
日期:2014-10-28 11:23:27水瓶座
日期:2015-01-20 10:19:022015亚冠之柏斯波利斯
日期:2015-07-11 18:17:2015-16赛季CBA联赛之同曦
日期:2015-12-23 12:38:582016猴年福章徽章
日期:2016-02-18 15:30:34
13 [报告]
发表于 2014-08-19 15:06 |只看该作者
我有点想不明白的是为什么这里会有那么多搞生物的,全都是各种很的难度的文件处理回复 7# Herowinter


   

论坛徽章:
9
寅虎
日期:2013-12-02 12:49:22巨蟹座
日期:2014-07-18 18:13:34卯兔
日期:2014-07-25 14:43:08子鼠
日期:2014-07-26 10:10:51酉鸡
日期:2014-07-31 15:09:562015亚冠之本尤德科
日期:2015-05-19 09:27:382015亚冠之卡尔希纳萨夫
日期:2015-06-20 10:30:212015亚冠之阿尔纳斯尔
日期:2015-07-01 20:46:062015亚冠之城南
日期:2015-07-15 21:12:00
14 [报告]
发表于 2014-08-19 15:47 |只看该作者
  1. awk 'NR==FNR{a[$2]=$0}NR>FNR{FS=",";if($3 in a)print a[$3]}' b.txt c.txt
复制代码
把你的两个文件位置调换一下可以这样写,另外2楼说的是正确的

论坛徽章:
9
寅虎
日期:2013-12-02 12:49:22巨蟹座
日期:2014-07-18 18:13:34卯兔
日期:2014-07-25 14:43:08子鼠
日期:2014-07-26 10:10:51酉鸡
日期:2014-07-31 15:09:562015亚冠之本尤德科
日期:2015-05-19 09:27:382015亚冠之卡尔希纳萨夫
日期:2015-06-20 10:30:212015亚冠之阿尔纳斯尔
日期:2015-07-01 20:46:062015亚冠之城南
日期:2015-07-15 21:12:00
15 [报告]
发表于 2014-08-19 15:50 |只看该作者
本帖最后由 lifayi2008 于 2014-08-19 16:14 编辑

awk 'NR==FNR{FS=","}{a[$3]=0}NR>FNR{FS="\t"}{if ($2 in a){print $0}}'  file1 file2
你想让NR==FNR对{FS=","}{a[$3]=0} 起作用的话 应该用大括号括起来 或者 写成这样{FS=",";a[$3]=0}  结果不对是因为第二次更改FS后到处理下一行时候才会生效

论坛徽章:
0
16 [报告]
发表于 2014-08-19 16:22 |只看该作者
回复 15# lifayi2008

哦,那怎么才能把第一行也包含进来呢?
   

论坛徽章:
9
寅虎
日期:2013-12-02 12:49:22巨蟹座
日期:2014-07-18 18:13:34卯兔
日期:2014-07-25 14:43:08子鼠
日期:2014-07-26 10:10:51酉鸡
日期:2014-07-31 15:09:562015亚冠之本尤德科
日期:2015-05-19 09:27:382015亚冠之卡尔希纳萨夫
日期:2015-06-20 10:30:212015亚冠之阿尔纳斯尔
日期:2015-07-01 20:46:062015亚冠之城南
日期:2015-07-15 21:12:00
17 [报告]
发表于 2014-08-19 16:32 |只看该作者
那种写法的话 我也没办法  不过可以变通一下处理
  1. root@ubuntu14:~/test# cat b.txt
  2. chr1    16877405        .       G       A         ...   
  3. chr1    16910063        rs3872319       C       T          ...
  4. chr1    16950470        rs12144467      C       T       ...
  5. root@ubuntu14:~/test# cat c.txt
  6. fam1,chr1,16950470,0.833266667007005
  7. fam1,chr1,16877405,0.684558404931228
  8. fam1,chr1,103427994,0.48393638491905
  9. fam1,chr1,111863039,0.980521031104692
  10. root@ubuntu14:~/test# awk 'NR==FNR{split($0,a,",");b[a[3]]}NR>FNR{if($2 in b)print $0}' c.txt b.txt
  11. chr1    16877405        .       G       A         ...   
  12. chr1    16950470        rs12144467      C       T       ...
复制代码
回复 16# 明瞳狐狸


   

论坛徽章:
0
18 [报告]
发表于 2014-08-19 16:38 |只看该作者
回复 17# lifayi2008
恩,好了,出来了。谢谢你这么耐心的回答。

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP