Em awk
, o primeiro argumento para as funções sub()
e gsub()
, o segundo argumento para a match()
função e o terceiro argumento opcional para split()
, é uma expressão regular estendida.
Esse argumento pode ser uma expressão arbitrária avaliada como uma string interpretada como uma expressão regular ou pode ser uma constante de expressão regular.
Em awk
, uma constante de expressão regular é escrita /RE/
para alguma expressão regular RE
(um " ERE
token" na awk
gramática).
Pergunta: Supondo que RE
permaneça o mesmo (alguma expressão regular não variável), há alguma diferença prática entre using /RE/
e using "RE"
(um " STRING
token" na awk
gramática) em uma chamada para, por exemplo, sub()
? Como alternativa: Existe alguma awk
implementação conhecida que faça diferença entre essas duas formas de representar uma expressão regular em uma chamada para as funções mencionadas acima?
O motivo da pergunta é que me lembro de ter que modificar algum awk
código que tentei usar "RE"
como expressão regular em uma chamada para sub()
ou gsub()
, porque, por qualquer motivo, a awk
implementação em questão fez a coisa errada, a menos que eu chamasse a função com /RE/
.
Infelizmente, isso foi há algum tempo (mais de 2 anos), então não me lembro dos detalhes e não tenho certeza de qual Unix eu usava na época (possivelmente OpenBSD), mas desde então venho querendo fazer a pergunta.