免费注册 查看新帖 |

Chinaunix

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

求助一程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-05 10:52 |只看该作者 |倒序浏览
有两个文件,分别是list.txt与input.txt。

list.txt放的文件如下(部分):
CLOCK        CLOCK        9575
PPARD        PPARD        5467
DSG4        DSG4        147409
PTGER3        PTGER3        5733
NUP35        NUP35        129401

文件共三列,第一和二列相同,第三列对应相应的数字


input.txt放的文件如下(部分):
147409
9575
129401


input.txt只有一列,如果input.txt里的数字与list.txt里的数字相同则输出list.txt 文件里相应的值并保存到result.txt文件中


如上面的列子应该输出
DSG4
CLOCK
NUP35



我把list.txt,input.txt,以及两者应该得到的结果以附件形式列上去。

test.rar

9.51 KB, 下载次数: 30

论坛徽章:
0
2 [报告]
发表于 2011-01-05 11:06 |只看该作者
本帖最后由 lkk2003rty 于 2011-01-05 15:19 编辑

发错地方了 sorry  编辑掉
不水贴  写个awk
awk 'NR==FNR{a[$3]=$1;next}{if($0 in a)printa[$0]}' list.txt input.txt

论坛徽章:
0
3 [报告]
发表于 2011-01-05 11:29 |只看该作者
本帖最后由 x9x9 于 2011-01-06 09:58 编辑
  1. use strict;
  2. use warnings;

  3. open LIS,"<list.txt" or die "can't open file:$!";
  4. open INP,"<input.txt" or die "can't open file:$!";
  5. open RES,">result.txt" or die "can't creat file:$!";

  6. chomp(my @arr=<INP>);
  7. close INP;


  8. while (<LIS>){
  9. chomp;
  10. my ($x,$y,$z) =split /\t/,$_;
  11. foreach my $list (@arr){
  12. print RES $x."\n" if ($list == $z);
  13. }
  14. }

  15. close LIS;
  16. close RES;
复制代码

论坛徽章:
0
4 [报告]
发表于 2011-01-05 22:18 |只看该作者
发错地方了 sorry  编辑掉
不水贴  写个awk
awk 'NR==FNR{a[$3]=$1;next}{if($0 in a)printa[$0]}' list.txt input.txt

awk不太会用,运行了一下没有输出内容,不知是怎么回事?


x9x9战友的程序运行了一下附件的test,出来的结果只有一条,应该是55条,不知是什么问题

论坛徽章:
0
5 [报告]
发表于 2011-01-06 09:10 |只看该作者
回复 4# bioinfor


    貌似俺俺错键了 漏了个空格
  1. awk 'NR==FNR{a[$3]=$1;next}{if($0 in a)print a[$0]}' list.txt input.txt
复制代码

论坛徽章:
0
6 [报告]
发表于 2011-01-06 09:14 |只看该作者
  1. perl -ne '$tmp=$_;if($ARGV eq "list.txt"){push @tmp,$tmp}else{for(@tmp){print $1."\n" if(/(\S+)\s+$tmp/)}} ;' list.txt input.txt
复制代码

论坛徽章:
0
7 [报告]
发表于 2011-01-06 10:00 |只看该作者
回复 4# bioinfor


    修改过了,应该可以了。你的rusult.txt 里是按字母排序的,我的没做排序。

论坛徽章:
0
8 [报告]
发表于 2011-01-06 10:38 |只看该作者
运行了一下,程序都很好用,谢谢!学习了

论坛徽章:
0
9 [报告]
发表于 2011-01-06 11:29 |只看该作者
回复 6# toniz


    这个不错就是初学者很难理解。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP