免费注册 查看新帖 |

Chinaunix

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

菜鸟整合文件求助! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-06-04 21:49 |只看该作者 |倒序浏览
我有一些需要修改的A文件以 .txt 结尾:testA.txt

A文件每一列用tab键分隔:
$cat testA.txt
A    XX    XX
Z    XX    XX

另一个B文件的第一列包含A部分文件第一列的id,第一列与其它列用tab分隔,其它列的数目不固定,相互之间用空格分开:
$cat B.txt
A    A1 A2
B    B1 B2 B3
Z    Z1


想根据两个文件的共有ID, 得到B文件后几列的内容,与A文件名对应,最后得到下面的结果:
testA    A1
testA    A2
testA    Z1


请各位大神指点小弟,刚学perl代码起了个头后面不知道怎么办了,求指点!

foreach $test (@testfiles){ #testA.txt testB.txt ...
    $name =~ /(.*)\.txt/;
    $name = $1;
    open(IN,"<$test");
    while(<IN>){
        
    }
}

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
2 [报告]
发表于 2017-06-05 00:52 |只看该作者
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my ($prefix) = split(/\./, $ARGV[0]);   # Read prefix from TestA.txt
  5. my %hData = ();
  6. while(<>){
  7.         my ($id, @aList) = split;
  8.         next if(!$hData{$id}++);
  9.         print(join("\t", $prefix, $_), "\n") for @aList;
  10. }
复制代码

perl abc.pl TestA.txt B.txt
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP