Computação
Expressões Regulares
Awk
Característica
Como fazer
Busca
Operador ~, Função match
Substituição
Funções sub, gensub
Divisão
Função split
ER crua
/entre barras/
Ignore M/m
Variável IGNORECASE
Global
Função gsub, modificador g
Awk é uma linguagem antiga (1977) que combina processamento de texto com estruturas de uma linguagem genérica, possuindo condicionais, operações aritméticas e afins.
Além do Awk clássico do Unix, também existe o GNU Awk, conhecido como gawk, que traz algumas f uncionalidades novas e um melhor suporte às expressões regulares. O gawk é amplamente utilizado em sistemas Linux.
Grande parte dos exemplos deste tópico f uncionará em ambas versões.
Caso contrário, será feita uma menção sobre quais são as características exclusivas do GNU Awk.
As expressões regulares são parte integrante da linguagem. Basta colocar uma expressão entre barras que o Awk saberá que aquilo não é uma string, e sim uma expressão regular com metacaracteres. Se sua expressão possuir uma barra /, lembre-se de escapá-la \/ para evitar problemas.
O operador til ~ é usado para fazer comparações de strings com expressões regulares. Para uma comparação inversa, em que o teste retornará sucesso se a expressão não casar com a string, use o operador !~. if ("Awk" ~ /^A/) { print "Casou"
}
if ("Awk" !~ /^X/) { print "Não casou"
}
Capítulo 7 ! Linguagens e ferramentas
[ 105 ]
Para fazer testes ignorando a diferença entre maiúsculas e minúsculas, antes mude para 1 o valor da variável IGNORECASE, que f unciona como uma chave que liga e desliga esse comportamento. Mude o valor da variável para zero quando quiser retornar à comparação normal.
IGNORECASE = 1 if ("Awk" ~ /^a/) { print "Casou"
}
O Awk do Unix não reconhece essa variável, então a única maneira de simular esse comportamento é usando a criatividade: converta a string para minúsculas ao fazer o teste e use somente minúsculas em sua