$ perl -Mstrict -Mwarnings -E ' my @data = ( q{1:1 word1}, q{1:1 word2}, q{1:1 word3}, q{1:1 word4}, q{1:2 word1}, q{1:2 word2}, q{1:2 word3}, q{1:3 word1}, q{1:3 word2}, q{1:3 word3} ); my $old_head = q{}; for (@data) { my $new_head = (split)[0]; if ($new_head ne $old_head) { say "> $new_head"; $old_head = $new_head; } say; } ' > 1:1 1:1 word1 1:1 word2 1:1 word3 1:1 word4 > 1:2 1:2 word1 1:2 word2 1:2 word3 > 1:3 1:3 word1 1:3 word2 1:3 word3