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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |