Você estava quase lá:
$ awk -F'\n' -vRS="-+\n" '($1){print $1,$2,$3; }' file
49515 23/6/2014 SL B .OO 2500.00 R ROY 4561235 BEING THE T.E PAID
23495 26/7/2014 CL A 2300.00 .00 S DAS 2334167 BEING THE MONEY RECOVERED
Ou, se você preferir o bloco BEGIN:
awk 'BEGIN{FS="\n"; RS="-+\n"}($1){print $1,$2,$3; }' file
O problema (supondo que /n
fosse um erro de digitação) era que você estava usando ^
e $
na definição de RS
. Não tenho certeza sobre os aspectos internos de como o RS
regex é implementado, mas imagino que eles realmente se referem ao início e ao final do arquivo, não à linha. Como solução alternativa, defino RS
para um trecho de -
que termina em uma nova linha. No entanto, isso significa que ele será quebrado se você puder ter um ou mais -
no final de uma linha. Não sei como combinar desde o início, pois \n-+\n
falha na primeira linha.
Uma abordagem semelhante seria substituir ^-+$
por uma linha em branco e usar o modo de parágrafo do perl:
$ sed 's/--*/\n/' file | perl -F'\n' -00ane 'print "@F\n";'
49515 23/6/2014 SL B .OO 2500.00 R ROY 4561235 BEING THE T.E PAID
23495 26/7/2014 CL A 2300.00 .00 S DAS 2334167 BEING THE MONEY RECOVERED