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'.