AWK - Expressões regulares

AWK é muito poderoso e eficiente no tratamento de expressões regulares. Uma série de tarefas complexas pode ser resolvida com expressões regulares simples. Qualquer especialista em linha de comando conhece o poder das expressões regulares.

Este capítulo cobre expressões regulares padrão com exemplos adequados.

Ponto

Corresponde a qualquer caractere único, exceto o caractere de fim de linha. Por exemplo, o exemplo a seguir correspondefin, fun, fan etc.

Exemplo

[jerry]$ echo -e "cat\nbat\nfun\nfin\nfan" | awk '/f.n/'

Ao executar o código acima, você obtém o seguinte resultado -

Resultado

fun
fin
fan

Início da linha

Corresponde ao início da linha. Por exemplo, o exemplo a seguir imprime todas as linhas que começam com padrãoThe.

Exemplo

[jerry]$ echo -e "This\nThat\nThere\nTheir\nthese" | awk '/^The/'

Ao executar este código, você obtém o seguinte resultado -

Resultado

There
Their

Fim da linha

Corresponde ao fim da linha. Por exemplo, o exemplo a seguir imprime as linhas que terminam com a letran.

Exemplo

[jerry]$ echo -e "knife\nknow\nfun\nfin\nfan\nnine" | awk '/n$/'

Resultado

Ao executar este código, você obtém o seguinte resultado -

fun
fin
fan

Combinar conjunto de caracteres

É usado para combinar apenas um de vários caracteres. Por exemplo, o exemplo a seguir corresponde ao padrãoCall e Tall mas não Ball.

Exemplo

[jerry]$ echo -e "Call\nTall\nBall" | awk '/[CT]all/'

Resultado

Ao executar este código, você obtém o seguinte resultado -

Call
Tall

Conjunto exclusivo

No conjunto exclusivo, o carat anula o conjunto de caracteres entre colchetes. Por exemplo, o exemplo a seguir imprime apenasBall.

Exemplo

[jerry]$ echo -e "Call\nTall\nBall" | awk '/[^CT]all/'

Ao executar este código, você obtém o seguinte resultado -

Resultado

Ball

Alteração

Uma barra vertical permite que as expressões regulares tenham OR logicamente. Por exemplo, o exemplo a seguir imprimeBall e Call.

Exemplo

[jerry]$ echo -e "Call\nTall\nBall\nSmall\nShall" | awk '/Call|Ball/'

Ao executar este código, você obtém o seguinte resultado -

Resultado

Call
Ball

Zero ou uma ocorrência

Corresponde a zero ou uma ocorrência do caractere anterior. Por exemplo, o exemplo a seguir correspondeColour assim como Color. Nós fizemosu como um caractere opcional usando ?.

Exemplo

[jerry]$ echo -e "Colour\nColor" | awk '/Colou?r/'

Ao executar este código, você obtém o seguinte resultado -

Resultado

Colour
Color

Zero ou mais ocorrências

Corresponde a zero ou mais ocorrências do caractere anterior. Por exemplo, o exemplo a seguir correspondeca, cat, catt, e assim por diante.

Exemplo

[jerry]$ echo -e "ca\ncat\ncatt" | awk '/cat*/'

Ao executar este código, você obtém o seguinte resultado -

Resultado

ca
cat
catt

Uma ou mais ocorrências

Corresponde a uma ou mais ocorrências do caractere anterior. Por exemplo, o exemplo abaixo corresponde a uma ou mais ocorrências do2.

Exemplo

[jerry]$ echo -e "111\n22\n123\n234\n456\n222"  | awk '/2+/'

Ao executar o código acima, você obtém o seguinte resultado -

Resultado

22
123
234
222

Agrupamento

Parentheses ()são usados ​​para agrupamento e o caractere | é usado para alternativas. Por exemplo, a seguinte expressão regular corresponde às linhas que contêmApple Juice or Apple Cake.

Exemplo

[jerry]$ echo -e "Apple Juice\nApple Pie\nApple Tart\nApple Cake" | awk 
   '/Apple (Juice|Cake)/'

Ao executar este código, você obtém o seguinte resultado -

Resultado

Apple Juice
Apple Cake