Como você diz ao awk para usar um #
caractere sozinho em uma linha como separador de registros? O problema é que você não pode dizer RS="^#$"
porque ^
corresponde ao início do arquivo, não ao início de uma linha, e RS="#\n"
também não funciona porque corresponde a #
caracteres que não estão no início de uma linha.
$ data='#
first record, first field
first record, second field
#
second record, first field#
second record, second field
'
Em seguida, imprima o primeiro campo de cada registro, usando RS="#\n"
:
$ printf "%s" "$data" | awk '
BEGIN { RS="#\n"; FS="\n" }
/./ {print $1}
'
first record, first field
second record, first field
second record, second field
A última linha está errada porque não é o primeiro campo, mas o segundo. A saída pretendida foi
first record, first field
second record, first field#
1
Você poderia agradar também fornecem um exemplo da saída que você precisa
—
roaima
para que seus dados se pareçam
—
21415 Skaperen
line one#line two#line three
?
e
—
21415 Skaperen
RS="#"
faz o que?
@ Skaperen no, os dados se parecem
—
Ernest A
#\nrecord one\n#\nrecord two
e cada registro consiste em vários \n
campos separados.
RS='#\n'
deve funcionar afaik - embora possa tratar o inicial #
como encerra uma ficha vazio (ou seja, todos os NR
valores serão "off" por um)