Para arquivos que cabem na memória, você pode usar o Perl, você pode definir o separador de registro de entrada.
perl -e '$/="\n\n"; print sort <>' t.txt
Se o arquivo for grande demais para a memória, mas você tiver uma quantidade igual de espaço livre em disco, poderá fazer uma classificação em três etapas:
- use perl para mesclar linhas de cada registro
- classificar
- use perl para dividir as linhas de cada registro
Para classificar pelo valor de um dos atributos, eu leria os dados em uma estrutura de dados adequada, como uma matriz de hashes AoH e defina um comparador como descrito em perldoc -f sort
Alternativamente, eu faria
- Use perl para converter para CSV apenas de valores
- classificar
- Use perl para converter CSV de volta para registros de múltiplas linhas com pares nome = valor
Provavelmente seria melhor fazer todo o trabalho em Perl.
Outras linguagens de programação estão disponíveis.