1 300 1_a 30 1_b 20
1 300 2_a 22 2_b 12
1 320 1_a 10 1_b 30
1 320 2_a 32 2_b 22
2 320 1_a 31 1_b 20
2 320 2_a 21 2_b 12
####
use strict;
use warnings;
my $PRINTF = '%3s %3s %s %s %s %s';
my $HEADERS = 2;
my @prev_cells;
while () {
# Input data.
my @cells = split /\t/, $_;
# Format the data for printing.
$cells[0] .= ' -';
# Remove redundant headers.
my @display_cells = @cells;
if (@prev_cells) {
for (@display_cells[ 0 .. $HEADERS-1 ]) {
last if $_ ne shift @prev_cells;
$_ = '';
}
}
@prev_cells = @cells;
# Output data.
printf $PRINTF, @display_cells;
}
__DATA__
1 300 1_a 30 1_b 20
1 300 2_a 22 2_b 12
1 320 1_a 10 1_b 30
1 320 2_a 32 2_b 22
2 320 1_a 31 1_b 20
2 320 2_a 21 2_b 12
2 320 2_a 33 2_b 44
####
1 - 300 1_a 30 1_b 20
2_a 22 2_b 12
320 1_a 10 1_b 30
2_a 32 2_b 22
2 - 320 1_a 31 1_b 20
2_a 21 2_b 12
2_a 33 2_b 44