Como usar expressões AWK e regulares para filtrar texto ou string nos arquivos

Como usar expressões AWK e regulares para filtrar texto ou string nos arquivos

Quando executamos certos comandos no Unix/Linux para ler ou editar texto de uma string ou arquivo, na maioria das vezes tentamos filtrar a saída para uma determinada seção de interesse. É aqui que o uso de expressões regulares é útil.

Leia também: 10 operadores úteis de encadeamento Linux com exemplos práticos

O que são expressões regulares?

Uma expressão regular pode ser definida como uma cordas que representam várias sequência de caracteres. Uma das coisas mais importantes sobre expressões regulares é que elas permitem filtrar a saída de um comando ou arquivo, edite uma seção de um texto ou arquivo de configuração e assim por diante.

Características da expressão regular

Expressões regulares são feitas de:

  1. Caracteres comuns como o espaço, sublinhado (_), a-z, a-z, 0-9.
  2. Meta caracteres que são expandidos para caracteres comuns, eles incluem:
    1. (.) ele corresponde a qualquer caractere, exceto uma nova linha.
    2. (*) corresponde a zero ou mais existências do caráter imediato que o precedeu.
    3. [ personagens) ] Ele corresponde a qualquer um dos caracteres especificados em caracteres, também pode -se usar um hífen (-) para significar uma variedade de personagens como [a-f], [1-5], e assim por diante.
    4. ^ Combina o início de uma linha em um arquivo.
    5. $ corresponde ao fim da linha em um arquivo.
    6. \ é um personagem de fuga.

Para filtrar o texto, é preciso usar uma ferramenta de filtragem de texto, como Awk. Você pode pensar em Awk como uma linguagem de programação própria. Mas para o escopo deste guia para usar Awk, Vamos cobri -lo como uma simples ferramenta de filtragem de linha de comando.

A sintaxe geral do AWK é:

# nome do arquivo 'script' awk 

Onde 'roteiro' é um conjunto de comandos que são entendidos por Awk e são executados em arquivo, nome do arquivo.

Funciona lendo uma determinada linha no arquivo, faz uma cópia da linha e depois executa o script na linha. Isso é repetido em todas as linhas do arquivo.

O 'roteiro' está na forma '/ padrão/ ação' onde padrão é uma expressão regular e o Ação é o que o Awk fará quando encontrar o padrão fornecido em uma linha.

Como usar a ferramenta de filtragem AWK no Linux

Nos exemplos a seguir, nos concentraremos nos personagens da meta que discutimos acima sob os recursos do AWK.

Um exemplo simples de usar awk:

O exemplo abaixo imprime todas as linhas no arquivo /etc/hosts Uma vez que nenhum padrão é dado.

# awk '//print '/etc/hosts 
Awk imprime todas as linhas em um arquivo

Use Awk com padrão:

I o exemplo abaixo, um padrão LocalHost foi dado, então o Awk corresponderá à linha tendo LocalHost no /etc/hosts arquivo.

# awk '/localhost/print ' /etc /hosts 
Impressão awk dada linha de correspondência em um arquivo

Usando awk com (.) curinga em um padrão

O (.) vai combinar strings contendo loc, LocalHost, Localnet No exemplo abaixo.

Isto é, dizer * L Some_single_Character C *.

# awk '/eu.c/print ' /etc /hosts 
Use awk para imprimir strings correspondentes em um arquivo

Usando AWK com (*) caractere em um padrão

Ele corresponderá a strings contendo LocalHost, Localnet, linhas, capaz, Como no exemplo abaixo:

# awk '/l*c/print ' /etc /localhost 
Use awk para combinar strings no arquivo

Você também perceberá que (*) tenta obter a partida mais longa possível, pode detectar.

Vamos olhar para um caso que demonstra isso, tome a expressão regular t*t o que significa que combina strings que começam com a carta t e terminar com t Na linha abaixo:

Este é o Tecmint, onde você obtém os melhores bons tutoriais, como fazer, guias, Tecmint. 

Você receberá as seguintes possibilidades quando usar o padrão /t*t/:

Isso é t Esta é um pouco, isso é um ponto de vista, onde você consegue isso é o TECMINT, onde você obtém o melhor bom t Esta é uma parte de tecmint, onde você obtém os melhores tutoriais, como isso é Tecmint, onde você obtém os melhores tutoriais bons , como Tos, guias, t This Is Tecmint, onde você obtém os melhores bons tutoriais, como Tos, Guias, Tecmint 

E (*) em /t*t/ O caractere curinga permite que o AWK escolha a última opção:

Este é o Tecmint, onde você obtém os melhores bons tutoriais, como fazer, guias, Tecmint 

Usando awk com set [personagens (s)]

Tomemos, por exemplo, o conjunto [Al1], Aqui o Awk corresponderá a todas as cordas que contêm caráter a ou eu ou 1 em uma linha no arquivo /etc/hosts.

# awk '/[al1]/print ' /etc /hosts 
Use-Awk para imprimir caracteres correspondentes no arquivo

O próximo exemplo corresponde às cordas começando com qualquer K ou k seguido pela T:

# awk '/[Kk] t/print ' /etc /hosts 
Use awk para imprimir string correspondente no arquivo

Especificando caracteres em um intervalo

Entenda personagens com Awk:

  1. [0-9] significa um único número
  2. [A-Z] significa corresponder a uma única letra minúscula
  3. [A-Z] significa corresponder a uma única letra superior
  4. [A-ZA-Z] significa corresponder a uma única letra
  5. [A-ZA-Z 0-9] significa corresponder a uma única letra ou número

Vamos ver um exemplo abaixo:

# awk '/[0-9]/print ' /etc /hosts 
Use awk para imprimir números correspondentes no arquivo

Toda a linha do arquivo /etc/hosts contém pelo menos um único número [0-9] No exemplo acima.

Use awk com (^) meta personagem

Ele corresponde a todas as linhas que começam com o padrão fornecido como no exemplo abaixo:

# awk '/^Fe/print ' /etc /hosts # awk'/^ff/print ' /etc /hosts 
Use awk para imprimir todas as linhas correspondentes com padrão

Use awk com ($) meta personagem

Combina todas as linhas que terminam com o padrão fornecido:

# awk '/ab $/print ' /etc /hosts # awk'/OST $/print ' /etc /hosts # awk'/RS $/print ' /etc /hosts 
Use awk para imprimir a string de padrão dado

Use Awk com (\) Escape Charact

Ele permite que você leve o personagem a segui.

No exemplo abaixo, o primeiro comando imprime toda a linha no arquivo, o segundo comando não imprime nada porque eu quero corresponder a uma linha que tem $ 25.00, Mas nenhum personagem de fuga é usado.

O terceiro comando está correto, pois um personagem de fuga foi usado para ler $ como isso é.

# awk '//Print 'ofertas.txt # awk '/$ 25.00/Print 'ofertas.txt # awk '/\ $ 25.00/Print 'ofertas.TXT 
Use Awk com caráter de fuga

Resumo

Isso não é tudo com o Awk Ferramenta de filtragem de linha de comando, os exemplos acima de as operações básicas de Awk. Nas próximas partes, estaremos avançando sobre como usar características complexas de Awk. Obrigado por ler e por quaisquer adições ou esclarecimentos, poste um comentário na seção de comentários.