#!/usr/bin/perl use strict; use warnings; use 5.010; open my $fh, '<', \<) { chomp; push @terms, [split /\s+/]; } my $biggest = 0; my $id = ''; for my $term (sort sorter @terms) { $biggest = 0 if $id ne $term->[0]; if ($term->[2] > $biggest) { say join ' ', @$term; $biggest = $term->[2]; } $id = $term->[0]; } sub sorter { $a->[0] cmp $b->[0] || $a->[1] <=> $b->[1] || $b->[2] <=> $a->[2] } #### SEQ1 145 244 SEQ1 200 300 SEQ1 250 399 SEQ2 99 140 SEQ2 100 150 SEQ2 120 230