加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl,如何将重复标识符和重叠值的数据合并到散列中

发布时间:2020-12-16 06:22:48 所属栏目:大数据 来源:网络整理
导读:我想知道你是否可以帮我解决一个我无法理解的编码问题.我看到的制表符分隔的数据类似于以下内容: 00001 AU:137 AU:150 AU:18000001 AU:137 AU:17000002 AU:18000003 AU:147 AU:15500003 AU:155 我想要的输出是: 00001 AU:137 AU:150 AU:180 AU:17000002 AU
我想知道你是否可以帮我解决一个我无法理解的编码问题.我看到的制表符分隔的数据类似于以下内容:

00001  AU:137  AU:150  AU:180
00001  AU:137  AU:170
00002  AU:180
00003  AU:147  AU:155
00003  AU:155

我想要的输出是:

00001  AU:137  AU:150  AU:180  AU:170
00002  AU:180
00003  AU:147  AU:155

因此第一列(标识符)将合并值,删除重复项,以便它成为哈希.我不确定如何使用我当前的数据,因为它不能是具有重复键的哈希.如果标识符相同,我也不确定如何将数据推送到数组中.

我为没有代码而道歉.实际上,我确实尝试了很多,但他们看起来甚至不像我这样的新手.

任何帮助,建议将不胜感激,非常感谢您的时间和答案.我非常感谢.

解决方法

脚本:

#!/usr/bin/perl

use strict;
use warnings;

my %hash;
sub uniq { return keys %{{map {$_=>1} @_}}; }

open my $fh,'<input.txt' or die $!;
foreach (<$fh>) {
  $hash{$1} .= $2 if /^(S+)(s.*?)[nr]*$/;
}
close $fh;

foreach (sort keys %hash) {
  my @elements = uniq split /t/,$hash{$_};
  print "$_t",join(' ',sort @elements),"n";
}

输出:

00001    AU:137 AU:150 AU:170 AU:180
00002    AU:180
00003    AU:147 AU:155

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读