Este comportamento documentado para o BSD Awk é um erro?

7

Aparentemente, uma expressão de colchetes no BSD Awk que contém uma classe de caracteres irá ignorar quaisquer outros caracteres após a classe de caracteres:

MacOS $ cat file.txt
_
-
.
a
B
8
:
;
@
~
,
MacOS $ awk '/[@~.[:alnum:]:;-]/' file.txt 
.
a
B
8
@
~
MacOS $ awk '/[-;:@~.[:alnum:]]/' file.txt 
-
.
a
B
8
:
;
@
~
MacOS $ awk '/[^@~.[:alnum:]:;-]/' file.txt 
_
-
:
;
,
MacOS $ awk '/[^-;:@~.[:alnum:]]/' file.txt 
_
,
MacOS $ 

No GNU Awk (mostrado no Ubuntu 16.04), o comportamento é diferente; outros caracteres na expressão de colchetes são tratados da mesma forma, independentemente de virem antes ou depois da classe de caracteres:

Linux $ cat file.txt
_
-
.
a
B
8
:
;
@
~
,
Linux $ awk '/[@~.[:alnum:]:;-]/' file.txt 
-
.
a
B
8
:
;
@
~
Linux $ awk '/[-;:@~.[:alnum:]]/' file.txt 
-
.
a
B
8
:
;
@
~
Linux $ awk '/[^@~.[:alnum:]:;-]/' file.txt 
_
,
Linux $ awk '/[^-;:@~.[:alnum:]]/' file.txt 
_
,
Linux $ 

Isso é documentado em algum lugar? Ou, se for um bug, é um bug conhecido ? (E se for um bug conhecido, ele é corrigido em versões posteriores do Awk?)

O que devo fazer com essa descoberta? Existe algum lugar para eu abrir um relatório de bug?

    
por Wildcard 06.04.2017 / 01:43

0 respostas

Tags