#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11144847 use warnings; my %res; /(id\d+)(.*)/s and push @{ $res{$2} }, $1 for split />/, join '', ; for ( sort keys %res ) { local $" = '|'; print ">@{$res{$_}}$_"; } __DATA__ >id1|Q51487|P-474-4|86-98,113-126,297-310,322-335 CSLIPDYQRPEAPVAAAYPQGQAYGQNTGAAAVPAADIGWREFFRDPQLQQLIGVALE >id2|Q51487|P-474-4|86-98,113-126,297-310,322-335 CSLIPDYQRPEAPVAAAYPQGQAYGQNTGAAAVPAADIGWREFFRDPQLQQLIGVALE >id3|Q51487|P-474-4|86-98,113-126,297-310,322-335 CSLIPDYQRPEAPVAAAYPQGQAYGQNTGAAAVPAADIGWREFFRDPQLQQLIGVALE >id4|Q51487|P-474-4|86-98,113-126,297-310,322-335 alt CSLIPDYQRPEAPVAAAYPQGQAYGQNTGAAAVPAADIGWREFFRDPQLQQLIGVALE >id5|Q51487|P-474-4|86-98,113-126,297-310,322-335 alt CSLIPDYQRPEAPVAAAYPQGQAYGQNTGAAAVPAADIGWREFFRDPQLQQLIGVALE