我想知道你是否可以帮我解决一个我无法理解的编码问题.我看到的制表符分隔的数据类似于以下内容:
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.*?)[\n\r]*$/; } 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