[文本处理]将两个文本第一列/首列内容相同的行合并成一行

There's more than one way to do it!
https://metacpan.org http://perlmonks.org
头像
PerlMonk
渐入佳境
渐入佳境
帖子: 51
注册时间: 2016年09月19日 10:20
拥有现金: 锁定
Has thanked: 4 times
Been thanked: 3 times
联系:

[文本处理]将两个文本第一列/首列内容相同的行合并成一行

帖子 #1 PerlMonk » 2017年04月20日 10:52

原问题:http://bbs.bathome.net/thread-43868-1-1.html

两个文本合并,按照a文本第一列的字符串,获取b文本的字符串 并合并输出
a文本:
101 a 2
102 b 3
103 c 4

b文本:
101 56
103 58
102 59

输出c文本为:
101 a 2 56
102 b 3 59
103 c 4 58

头像
PerlMonk
渐入佳境
渐入佳境
帖子: 51
注册时间: 2016年09月19日 10:20
拥有现金: 锁定
Has thanked: 4 times
Been thanked: 3 times
联系:

Re: [文本处理]将两个文本第一列/首列内容相同的行合并成一行

帖子 #2 PerlMonk » 2017年04月20日 10:52

Code: [全选] [展开/收缩] [Download] (Untitled.pl)
  1. use v5.16;
  2. my (%ha, %hb);
  3. loadFile("a.txt", \%ha);
  4. loadFile("b.txt", \%hb);
  5.  
  6. grep { print "$_$ha{$_}$hb{$_}\n" } (sort keys %ha);
  7.  
  8. sub loadFile
  9. {
  10.     my ($fname, $href) = @_;
  11.     open READ, "<:raw", $fname or die "$!";
  12.     for (<READ>)
  13.     {
  14.         s/\r?\n//;
  15.         $href->{$1} = $_ if (s/^(\d+)//);
  16.     }
  17.     close READ;
  18. }


回到 “Perl”

在线用户

用户浏览此论坛: 没有注册用户 和 1 访客