Usando o gawk, você pode usar uma expressão (subconjunto de) PCRE como separador de registro
( RS ), defina um separador de registro de saída diferente ( ORS )
e substitua \n .
Exemplo:
gawk 'BEGIN {RS="[ ]*;\n"; ORS="\n===\n"}
{gsub("\n","\n"); print} '
neste exemplo:
- registros são separados por
[ ]*;\nna entrada - registros são separados por "\ n === \ n" na oputput