Não tenho certeza se encontrei um bug no Gawk ou se estou interpretando mal / algo faltando na gawk
' man
page.
De acordo com a página gawk
de man
, quando no modo de compatibilidade, se RS
contiver vários caracteres, apenas o primeiro caractere será tratado como o separador de registro de entrada:
Records
Normally, records are separated by newline characters. You can control how records are separated by assigning values to the built-in variable RS
. If RS
is any single character, that character separates records. Otherwise, RS
is a regular expression. Text in the input that
matches this regular expression separates the record. However, in compatibility mode, only the first character of its string value is used
for separating records. If RS
is set to the null string, then records are separated by blank lines. When RS
is set to the null string, the
newline character always acts as a field separator, in addition to whatever value FS
may have.
Portanto, ao executar gawk -P -- '1' RS="bar" <<<'foobarfoo'
, esperaria o seguinte resultado (observe que -P
ativa o modo de compatibilidade, por gawk
' man
page):
foo
arfoo
No entanto, se eu executar:
% gawk -P -- '1' RS="bar" <<<'foobarfoo'
foo
foo
E o mesmo acontece mesmo quando se ativa explicitamente o modo de compatibilidade:
% gawk -c '1' RS="bar" <<<'foobarfoo'
foo
foo
Então, aparentemente, quando no modo de compatibilidade, o Gawk realmente divide os registros da mesma maneira que quando as extensões do GNU são ativadas. O que estou perdendo?
Isso está no Linux (Ubuntu 16.04 64 bits, versão Gawk: GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)
).