O significado é data ao contrário de constantes , no sentido de que "abc"
ou 88
ou /a|b/
aparecendo no programa awk é uma constante, mas uma variável awk contém dados ou $0
contém dados lidos da entrada. Os dados não são analisados, mas as constantes no corpo do texto do programa awk são.
Digamos que você queira corresponder a entrada x+y...z
onde houver 1 ou mais y
, então você precisa de um regexp, mas precisa escapar do +
senão significa apenas 1 ou mais x
' s. Então você pode usar qualquer um dos seguintes:
awk 'BEGIN{ a = "x\+y+z"; print a }
NR==1{ b = $0; print b; next }
$0 ~ a {print "match a " $0 }
$0 ~ b {print "match b " $0 }
$0 ~ /x\+y+z/ {print "match 2 " $0 }
$0 ~ "x\+y+z" {print "match 3 " $0 }
' <<\!
x\+y+z
x+yyyyz
!
As últimas quatro linhas imprimem que combinam com a mesma coisa, por exemplo, x+yyyyz
.
O print a
mostra a variável a
, o valor dos dados é x\+y+z
após a análise da constante,
o print b
mostra que a variável b
do valor dos dados lidos não analisados da primeira linha de dados de entrada é a mesma,
e a constante final de regexp e a constante de string são formas equivalentes.