use strict; use warnings; my @acc = (); while () { my @recs = split; push @acc, [@recs]; if (my $geneName = $recs[5]) { print join ("\t", @{$_}[0 .. 4], $geneName, "\n") for @acc; @acc = (); } } __DATA__ NT_113797 CDS 122829 123323 - gene=LOC644591 ProteinID=XP_932799.1 NT_113798 CDS 4457 4636 - NT_077932 CDS 9894 9928 - NT_077932 CDS 65297 65828 + NT_077932 CDS 89196 89690 - gene=LOC653505 ProteinID=BJDND993 #### NT_113797 CDS 122829 123323 - gene=LOC644591 NT_113798 CDS 4457 4636 - gene=LOC653505 NT_077932 CDS 9894 9928 - gene=LOC653505 NT_077932 CDS 65297 65828 + gene=LOC653505 NT_077932 CDS 89196 89690 - gene=LOC653505 p