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