в одну строку:
perl -le 'print for(sort((map {chomp; $_} (<>)), "f"))' < infile > outfile
Очевидно, что вам нужно обработать заголовки заранее, но техника довольно ясна
Например:
[dsm@localhost:~]$ perl -le 'print for(sort((map {chomp; $_;} (<>)), "f"))' <<EOP
> x
> v
> b
> m
> p
> o
> l
> j
> k
> EOP
b
f
j
k
l
m
o
p
v
x
[dsm@localhost:~]$