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

There's more than one way to do it!
https://metacpan.org http://perlmonks.org
回复
头像
PerlMonk
渐入佳境
渐入佳境
帖子: 49
注册时间: 2016年09月19日 10:20
联系:

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

帖子 PerlMonk »

原问题: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
渐入佳境
渐入佳境
帖子: 49
注册时间: 2016年09月19日 10:20
联系:

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

帖子 PerlMonk »

use v5.16;
my (%ha, %hb);
loadFile("a.txt", \%ha);
loadFile("b.txt", \%hb);

grep { print "$_$ha{$_}$hb{$_}\n" } (sort keys %ha);

sub loadFile
{
my ($fname, $href) = @_;
open READ, "<:raw", $fname or die "$!";
for (<READ>)
{
s/\r?\n//;
$href->{$1} = $_ if (s/^(\d+)//);
}
close READ;
}
回复

在线用户

正浏览此版面之用户: 没有注册用户 和 2 访客