Uma expressão regular (regex) é usada para encontrar uma determinada sequência de caracteres em 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 de regex são definidos abaixo.
Personagem | Descrição |
---|---|
. | Corresponde a qualquer caractere sem uma nova linha (\ n) |
\ | Cite um novo metacaractere |
^ | Corresponde ao início de uma linha |
$ | Combine o final de uma linha |
| | Defina uma alternativa |
() | Defina um grupo |
[] | Defina uma classe de personagem |
\C | Corresponde a qualquer palavra |
\ s | Corresponde a qualquer caractere de espaço em branco |
\ d | Corresponde a qualquer dígito |
\ b | Corresponde a qualquer limite de palavra |
Crie 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 Monitor de 15 "$ 100
p1002 Rato Rato A4tech $ 10
Impressora p1003 Samsung $ 50
p1004 HP Scanner Scanner $ 60
p1005 Logitech Mouse Mouse $ 15
Exemplo 1: definir um padrão regex usando a classe de caracteres
O seguinte comando 'awk' irá procurar e imprimir linhas contendo o caractere 'n' seguido pelos caracteres 'er'.
produtos $ cat.TXT$ awk '/ [n] [er] / print $ 0' produtos.TXT
A seguinte saída 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: definir um padrão regex usando o símbolo '^'
O seguinte comando 'awk' irá procurar e imprimir linhas que começam com o caractere 'p' e incluem o número 3.
produtos $ cat.TXT$ awk '/ ^ p.* 3 / print $ 0 'produtos.TXT
A seguinte saída será produzida após a execução dos comandos acima. Aqui, há uma linha que corresponde ao padrão.
Exemplo 3: definir um padrão regex usando a função gsub
O gsub () função é usada para pesquisar e substituir texto globalmente. O seguinte comando 'awk' irá procurar a palavra 'Scanner' e substituí-la pela palavra 'Roteador' antes de imprimir o resultado.
produtos $ cat.TXTProdutos $ awk 'gsub (/ Scanner /, "Router")'.TXT
A seguinte saída será produzida após a execução dos comandos acima. Existe uma linha que contém a palavra 'Scanner', e 'Scanner'é substituído pela palavra'Roteador'antes que a linha seja impressa.
Exemplo 4: definir um padrão regex com '*'
O seguinte comando 'awk' iráprocurar e imprimir qualquer string que comece com 'Mo' e inclua qualquer caractere subsequente.
produtos $ cat.TXT$ awk '/ Mo * / print $ 0' produtos.TXT
A seguinte saída será produzida após a execução dos comandos acima. Três linhas correspondem ao padrão: duas linhas contêm a palavra 'Mouse'e uma linha contém a palavra'Monitor'.
Exemplo 5: definir um padrão regex usando o símbolo '$'
O seguinte comando 'awk' irá procurar e imprimir as linhas no arquivo que terminam com o número 5.
produtos $ cat.TXT$ awk '/ 5 $ / print $ 0' produtos.TXT
A seguinte saída 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: Definir um padrão regex usando '^' e '|' símbolos
O '^o símbolo 'indica o início de uma linha, e o'|'símbolo indica uma instrução OR lógica. O seguinte comando 'awk' irá procurar e imprimir linhas que começam com o caractere 'p'e contém'Scanner' ou 'Mouse'.
produtos $ cat.TXT$ awk '/ ^ p.* (Scanner | Mouse) / 'produtos.TXT
A seguinte saída será produzida após a execução dos comandos acima. A saída mostra que duas linhas contêm a palavra 'Mouse'e uma linha contém a palavra'Scanner'. As três linhas começam com o caractere 'p'.
Exemplo 7: Definir um padrão regex usando o símbolo '+'
O '+'operador é usado para encontrar pelo menos uma correspondência. O seguinte comando 'awk' irá pesquisar e imprimir linhas que contenham o caractere 'n' pelo menos uma vez.
produtos $ cat.TXT$ awk '/ n + / print' produtos.TXT
A seguinte saída 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 Monitor, impressora e scanner.
Exemplo 8: definir um padrão regex usando a função gsub ()
O seguinte comando 'awk' irá pesquisar globalmente a palavra 'Impressora'e substitua pela palavra'Monitor'usando o função gsub ().
produtos $ cat.TXT$ awk 'gsub (/ Printer /, “Monitor”) print $ 0' produtos.TXT
A seguinte saída 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 de regex para diferentes tarefas de pesquisa e substituição. Alguns símbolos comumente usados em padrões regex são aplicados neste tutorial com o comando 'awk'.