Como usar Regex com o comando 'awk'

Como usar Regex com o comando 'awk'

Uma expressão regular (regex) é usada para encontrar uma determinada sequência de caracteres dentro de um arquivo. Símbolos como letras, dígitos e caracteres especiais podem ser usados ​​para definir o padrão. Várias tarefas podem ser facilmente concluídas usando padrões regex. Neste tutorial, mostraremos como usar padrões regex com o comando 'awk'.

Os caracteres básicos usados ​​em padrões

Muitos caracteres podem ser usados ​​para definir um padrão regex. Os caracteres mais comumente usados ​​para definir padrões regex são definidos abaixo.

Personagem Descrição
. Combine qualquer personagem sem uma nova linha (\ n)
\ Citar um novo meta-caractere
^ Combine o início de uma linha
$ Combine o final de uma linha
| Defina uma alternativa
() Defina um grupo
[] Defina uma classe de personagem
\c Corresponder a qualquer palavra
\ s Combine qualquer personagem do espaço branco
\ d Combine qualquer dígito
\ b Corresponder a qualquer limite da palavra

Criar um arquivo

Para acompanhar este tutorial, crie um arquivo de texto chamado produtos.TXT. O arquivo deve conter quatro campos: id, nome, tipo e preço.

Id Nome Tipo Preço

P1001 Monitor de 15 "Monitor $ 100

P1002 A4Tech Mouse Mouse $ 10

P1003 Impressora Samsung Printer $ 50

P1004 HP Scanner Scanner $ 60

P1005 Logitech Mouse Mouse $ 15

Exemplo 1: Defina um padrão regex usando a classe de caracteres

O seguinte comando 'awk' procurará e imprimirá linhas que contêm o caractere 'n' seguido pelos personagens 'er'.

$ CAT Products.TXT
$ awk '/ [n] [er]/ print $ 0' produtos.TXT

A saída a seguir será produzida após a execução dos comandos acima. A saída mostra a linha que corresponde ao padrão. Aqui, apenas uma linha corresponde ao padrão.

Exemplo 2: Defina um padrão regex usando o símbolo '^'

O seguinte comando 'awk' pesquisará e imprimirá linhas que começam com o personagem 'P' e incluirão o número 3.

$ CAT Products.TXT
$ awk '/^p.*3/ print $ 0 'produtos.TXT

A saída a seguir será produzida após a execução dos comandos acima. Aqui, há uma linha que corresponde ao padrão.

Exemplo 3: Defina um padrão regex usando a função GSUB

O gsub () A função é usada para procurar e substituir globalmente o texto. O seguinte comando 'awk' procurará a palavra 'scanner' e substituirá a palavra 'roteador' antes de imprimir o resultado.

$ CAT Products.TXT
$ awk 'gsub (/scanner/, "roteador") produtos.TXT

A saída a seguir será produzida após a execução dos comandos acima. Há uma linha que contém a palavra 'Scanner', e 'Scanner'é substituído pela palavra'Roteador'Antes da impressão da linha.

Exemplo 4: Defina um padrão regex com '*'

O seguinte comando 'awk' procurará e imprimirá qualquer string que começa com 'mo' e inclui qualquer personagem subsequente.

$ CAT Products.TXT
$ awk '/ mo*/ print $ 0' produtos.TXT

A saída a seguir será produzida após a execução dos comandos acima. Três linhas correspondem ao padrão: duas linhas contêm a palavra 'Rato'E uma linha contém a palavra'Monitor'.

Exemplo 5: Defina um padrão regex usando o símbolo '$'

O seguinte comando 'awk' procurará e imprimirá linhas no arquivo que terminam com o número 5.

$ CAT Products.TXT
$ awk '/ 5 $/ print $ 0' produtos.TXT

A saída a seguir será produzida após a execução dos comandos acima. Existe apenas uma linha no arquivo que termina com o número 5.

Exemplo 6: Defina um padrão regex usando o '^' e '|' símbolos

O '^'Símbolo indica o início de uma linha e o'|'Símbolo indica uma declaração lógica ou. O seguinte comando 'awk' procurará e imprimirá linhas que começam com o personagem 'p'e contém algum'Scanner' ou 'Rato'.

$ CAT Products.TXT
$ awk '/^p.* (Scanner | mouse)/'produtos.TXT

A saída a seguir será produzida após a execução dos comandos acima. A saída mostra que duas linhas contêm a palavra 'Rato'E uma linha contém a palavra'Scanner'. As três linhas começam com o personagem 'p'.

Exemplo 7: Defina um padrão regex usando o símbolo '+'

O '+'O operador é usado para encontrar pelo menos uma partida. O seguinte comando 'awk' procurará e imprimirá linhas que contêm o personagem 'n' pelo menos uma vez.

$ CAT Products.TXT
$ awk '/n+/print' produtos.TXT

A saída a seguir será produzida após a execução dos comandos acima. Aqui, o personagem 'n'contém ocorre pelo menos uma vez nas linhas que contêm as palavras Monitore, impressora e scanner.

Exemplo 8: Defina um padrão regex usando a função gsub ()

O seguinte comando 'awk' procurará globalmente a palavra 'Impressora'e substitua -o pela palavra'Monitor'Usando o função gsub ().

$ CAT Products.TXT
$ awk 'gsub (/impressora/, “monitor”) print $ 0' produtos.TXT

A saída a seguir será produzida após a execução dos comandos acima. A quarta linha do arquivo contém a palavra 'Impressora'duas vezes e na saída'Impressora'foi substituído pela palavra'Monitor'.

Conclusão

Muitos símbolos e funções podem ser usados ​​para definir padrões regex para pesquisas diferentes e substituir tarefas. Alguns símbolos comumente usados ​​nos padrões regex são aplicados neste tutorial com o comando 'awk'.