Com dois comandos, tr e sed, você pode transformá-lo em um formato mais semelhante a um registro:
echo 'changeset: 90echo 'changeset: 90:abcdef012345
tag: tip
user: me
date: Sat Apr 30 17:42:05 2011 -0700
summary: Made another change
changeset: 89:def012345abc
user: me
date: Sat Apr 30 16:52:19 2011 -0700
summary: Made a change
' | tr '\n' ';' | sed 's/;;/\n/'
changeset: 90:abcdef012345;tag: tip;user: me;date: Sat Apr 30 17:42:05 2011 -0700;summary: Made another change
changeset: 89:def012345abc;user: me;date: Sat Apr 30 16:52:19 2011 -0700;summary: Made a change;;
No entanto, se for o seu formato, eu iria para um formato mais semelhante a CSV. Você não precisa repetir o título em todas as linhas e com as guias em vez de ';' ou ',' (se você não precisa de guias como conteúdo), você obtém um formato que é muito bom de analisar manualmente, para comparar linhas, para grep linhas com grep e para produzir gráficos com o LibreOffice ou para colocar os dados em um banco de dados.
Se você tem um formato mais volátil, o xml pode ser melhor - não por si só, mas porque existem muitas ferramentas por aí.
Em Capítulo 5 de ESRs escrevendo "A Arte da Programação Unix , talvez você encontra alguma inspiração para o seu trabalho.