Com o GNU awk
1
gawk -vRS='#EOM\n' '{gsub(/\n[[:xdigit:]-]+/,"");} {$1=$1} 1' file.txt
- defina o separador de registro como
#EOM
seguido por uma nova linha - remove sequências de dígitos hexadecimais e hífens precedidos por novas linhas; isto retém a sequência inicial de cada registro desde que sua nova linha foi comida pelo RS anterior
- reatribuir um campo
$1=$1
para forçar o registro a ser reavaliado com separadores de saída padrão - imprime o registro (porque
1
é verdadeiro)
Teste
$ gawk -vRS='#EOM\n' '{gsub(/\n[[:xdigit:]-]+/,"");} {$1=$1} 1' file.txt
b929e3e1-29db this is a long message that is continued onto multiple lines
ff513a72-570d this is a short message
980d10aa-bbed another short message
1 . ele não parece funcionar com mawk
, por razões que eu não entendo (mesmo depois de substituir +
por \{1,\}
e vários outros ajustes)