Awk

Como usar AWK no Linux

Como usar AWK no Linux

Os utilitários que o Linux oferece geralmente seguem a filosofia de design do UNIX. Qualquer ferramenta deve ser pequena, usar texto simples para I / O e operar de maneira modular. Graças ao legado, temos algumas das melhores funcionalidades de processamento de texto com a ajuda de ferramentas como sed e awk.

No Linux, a ferramenta awk vem pré-instalada em todas as distros Linux. O próprio AWK é uma linguagem de programação. A ferramenta AWK é apenas um intérprete da linguagem de programação AWK. Neste guia, verifique como usar AWK no Linux.

Uso de AWK

A ferramenta AWK é mais útil quando os textos são organizados em um formato previsível. É muito bom em analisar e manipular dados tabulares. Ele opera linha por linha, em todo o arquivo de texto.

O comportamento padrão do awk é usar espaços em branco (espaços, tabulações, etc.) para separar campos. Felizmente, muitos dos arquivos de configuração no Linux seguem este padrão.

Sintaxe básica

É assim que a estrutura de comando do awk se parece.

$ awk '// ; ; '

As partes do comando são bastante autoexplicativas. Awk pode operar sem a parte de pesquisa ou ação. Se nada for especificado, a ação padrão na partida será apenas imprimir. Basicamente, o awk irá imprimir todas as correspondências encontradas no arquivo.

Se não houver um padrão de pesquisa especificado, o awk executará as ações especificadas em cada linha do arquivo.

Se ambas as partes forem fornecidas, então awk usará o padrão para determinar se a linha atual o reflete. Se houver correspondência, o awk executa a ação especificada.

Observe que o awk também pode funcionar em textos redirecionados. Isso pode ser feito canalizando o conteúdo do comando para um awk para agir. Saiba mais sobre o comando pipe do Linux.

Para fins de demonstração, aqui está um arquivo de texto de amostra. Ele contém 10 linhas, 2 palavras por linha.

amostra de $ cat.TXT

Expressão regular

Um dos principais recursos que tornam o awk uma ferramenta poderosa é o suporte de expressão regular (regex, para abreviar). Uma expressão regular é uma string que representa um certo padrão de caracteres.

Aqui está uma lista de algumas das sintaxes de expressões regulares mais comuns. Essas sintaxes regex não são apenas exclusivas do awk. Essas são sintaxes regex quase universais, portanto, dominá-las também ajudará em outros aplicativos / programação que envolvem expressão regular.

  • Personagens básicos: Todos os caracteres alfanuméricos sublinhados (_) etc.
    • Conjunto de caracteres: para facilitar as coisas, existem grupos de caracteres na regex. Por exemplo, maiúsculas (A-Z), minúsculas (a-z) e dígitos numéricos (0-9).
  • Metacaracteres: Estes são personagens que explicam várias maneiras de expandir os personagens comuns.
    • Período (.): Qualquer correspondência de caractere na posição é válida (exceto uma nova linha).
    • Asterisco (*): Zero ou mais existências do caractere imediato que o precede é válido.
    • Suporte ([]): A correspondência é válida se, na posição, qualquer um dos caracteres do colchete for correspondido. Pode ser combinado com conjuntos de caracteres.
    • Acento circunflexo (^): A partida terá que ser no início da linha.
    • Dólar ($): A partida terá que ser no final da linha.
    • Barra invertida (\): Se algum metacaractere tiver que ser usado no sentido literal.

Imprimindo o texto

Para imprimir todo o conteúdo de um arquivo de texto, use o comando de impressão. No caso do padrão de pesquisa, não há padrão definido. Então, awk imprime todas as linhas.

Amostra de $ awk 'print'.TXT

Aqui, “imprimir” é um comando AWK que imprime o conteúdo da entrada.

String search

AWK pode realizar uma pesquisa de texto básica no texto fornecido. Na seção de padrões, deve ser o texto para encontrar.

No comando a seguir, o awk irá procurar o texto “rápido” em todas as linhas do arquivo de amostra.TXT.

Amostra de $ awk '/ quick /'.TXT

Agora, vamos usar algumas expressões regulares para refinar ainda mais a pesquisa. O comando a seguir irá imprimir todas as linhas que têm “marrom” no início.

Amostra de $ awk '/ ^ brown /'.TXT

Que tal encontrar algo no final de uma linha? O seguinte comando irá imprimir todas as linhas que possuem “rápido” no final.

Amostra $ awk '/ quick $ /'.TXT

Padrão de curinga

O próximo exemplo vai mostrar o uso do acento circunflexo (.). Aqui, pode haver quaisquer dois caracteres antes do caractere “e”.

Amostra de $ awk '/… e /'.TXT

Padrão de curinga (usando asterisco)

E se houver qualquer número de caracteres no local? Para corresponder a qualquer caractere possível na posição, use o asterisco (*). Aqui, AWK corresponderá a todas as linhas que possuem qualquer quantidade de caracteres após “o”.

$ awk '/ a amostra * /'.TXT

Expressão de colchete

O exemplo a seguir irá mostrar como usar a expressão de colchetes. A expressão entre colchetes diz que, no local, a correspondência será válida se corresponder ao conjunto de caracteres entre colchetes. Por exemplo, o seguinte comando irá corresponder a “The” e “Tee” como correspondências válidas.

Amostra de $ awk '/ T [he] e /'.TXT

Existem alguns conjuntos de caracteres predefinidos na expressão regular. Por exemplo, o conjunto de todas as letras maiúsculas é rotulado como “A-Z”. No comando a seguir, awk irá corresponder a todas as palavras que contêm uma letra maiúscula.

Amostra $ awk '/ [A-Z] /'.TXT

Dê uma olhada no seguinte uso de conjuntos de caracteres com expressão de colchetes.

  • [0-9]: Indica um único dígito
  • [a-z]: Indica uma única letra minúscula
  • [A-Z]: Indica uma única letra maiúscula
  • [a-zA-z]: Indica uma única letra
  • [a-zA-z 0-9]: Indica um único caractere ou dígito.

Variáveis ​​pré-definidas Awk

AWK vem com um monte de variáveis ​​predefinidas e automáticas. Essas variáveis ​​podem tornar a escrita de programas e scripts com AWK mais fácil.

Aqui estão algumas das variáveis ​​AWK mais comuns que você encontrará.

  • NOME DO ARQUIVO: O nome do arquivo de entrada atual.
  • RS: O separador de registro. Devido à natureza do AWK, ele processa os dados, um registro por vez. Aqui, esta variável especifica o delimitador usado para dividir o fluxo de dados em registros. Por padrão, este valor é o caractere de nova linha.
  • NR: O número do registro de entrada atual. Se o valor RS for definido como padrão, este valor indicará o número da linha de entrada atual.
  • FS / OFS: O (s) caractere (s) usado (s) como separador de campo. Uma vez lido, AWK divide um registro em campos diferentes. O delimitador é definido pelo valor de FS. Ao imprimir, AWK reúne todos os campos. No entanto, neste momento, AWK usa o separador OFS em vez do separador FS. Geralmente, ambos FS e OFS são iguais, mas não obrigatórios para serem assim.
  • NF: O número de campos no registro atual. Se o valor padrão "espaço em branco" for usado, ele corresponderá ao número de palavras no registro atual.
  • ORS: O separador de registro para os dados de saída. O valor padrão é o caractere de nova linha.

Vamos verificá-los em ação. O comando a seguir usará a variável NR para imprimir da linha 2 à linha 4 do exemplo.TXT. AWK também suporta operadores lógicos como lógico e (&&).

$ awk 'NR> 1 && NR < 5' sample.txt

Para atribuir um valor específico a uma variável AWK, use a seguinte estrutura.

$ awk '// ; ; ' =,

Por exemplo, para remover todas as linhas em branco do arquivo de entrada, altere o valor de RS para basicamente nada. É um truque que usa uma regra POSIX obscura. Ele especifica que se o valor de RS é uma string vazia, os registros são separados por uma sequência que consiste em uma nova linha com uma ou mais linhas em branco. No POSIX, uma linha em branco sem conteúdo está completamente vazia. No entanto, se a linha contiver espaços em branco, ela não será considerada "em branco".

$ awk 'print' RS = "amostra.TXT

Recursos adicionais

AWK é uma ferramenta poderosa com muitos recursos. Embora este guia cubra muitos deles, ainda é apenas o básico. Dominar AWK exigirá mais do que apenas isso. Este guia deve ser uma boa introdução à ferramenta.

Se você realmente deseja dominar a ferramenta, aqui estão alguns recursos adicionais que você deve verificar.

  • Cortar espaço em branco
  • Usando uma declaração condicional
  • Imprime um intervalo de colunas
  • Regex com AWK
  • 20 exemplos AWK

A Internet é um bom lugar para aprender algo. Existem muitos tutoriais incríveis sobre noções básicas do AWK para usuários muito avançados.

Pensamento final

Esperançosamente, este guia ajudou a fornecer uma boa compreensão dos princípios básicos do AWK. Embora possa demorar um pouco, dominar o AWK é extremamente gratificante em termos do poder que confere.

Computação feliz!

Melhores jogos para jogar com rastreamento manual
Oculus Quest introduziu recentemente a grande ideia de rastreamento manual sem controladores. Com um número cada vez maior de jogos e atividades que e...
Como mostrar a sobreposição de OSD em aplicativos e jogos Linux em tela cheia
Jogar jogos em tela cheia ou usar aplicativos em modo de tela cheia sem distração pode cortar você das informações relevantes do sistema visíveis em u...
Top 5 cartas de captura de jogos
Todos nós vimos e amamos streaming de jogos no YouTube. PewDiePie, Jakesepticye e Markiplier são apenas alguns dos melhores jogadores que ganharam mil...