次のデータがあります。
MGW: VMG110
836-16
836-18
836-19
336-20
836-23
MGW: VMG120
3802-1
3802-2
3802-3
3456-1
3456-4
希望の出力は次のとおりです。
VMG110:836-16&-18&&-20&-23
VMG120:3802-1&&-3&3456-1&-4
与えられたデータ-1、-2、-3、-4は常にソートされます。
出力に-19がありません...-18&&の代わりに-20があります。ここで && は 18~20 を意味します。同じように提供してください。
ベストアンサー1
パールソリューション。出力の最初の行があなたのものとは異なります(必要な出力に以下がありませんか-
?)。&
#!/usr/bin/perl
use warnings;
use strict;
my $first = 1;
my @line;
sub output {
print join('&', @line), "\n" unless $first;
}
my $previous = q();
while (<>) {
chomp;
if (s/.*: //) {
output();
print "$_:";
$previous = q();
@line = ();
} else {
my ($prefix, $suffix) = split /-/;
if ($prefix ne $previous) {
push @line, "$prefix-$suffix";
} else {
push @line, "-$suffix";
}
$previous = $prefix;
}
undef $first;
}
output(); # Don't forget to output the last line.