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