A oferta de linux de utilitários geralmente segue a filosofia do Unix of Design. Qualquer ferramenta deve ser pequena, usar texto simples para E/S 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 é pré-instalada em todas as distritos 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, confira como usar o AWK no Linux.
Uso 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 de linha a linha, em todo o arquivo de texto.
O comportamento padrão do AWK é usar espaços em branco (espaços, guias, 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 da AWK se parece.
$ awk '// ; ; '
As partes do comando são bastante auto-explicativas. Awk pode operar sem a parte de busca ou ação. Se nada for especificado, a ação padrão na partida será apenas imprimindo. Basicamente, o AWK imprimirá todas as correspondências encontradas no arquivo.
Se não houver padrão de pesquisa especificado, o AWK executará as ações especificadas em todas as linhas do arquivo.
Se ambas as partes forem dadas, o AWK usará o padrão para determinar se a linha atual reflete. Se correspondido, então awk executa a ação especificada.
Observe que o AWK também pode funcionar em textos redirecionados. Isso pode ser alcançado com o conteúdo do comando para se esgotar para agir em. Saiba mais sobre o comando Linux Pipe.
Para fins de demonstração, aqui está um arquivo de texto de amostra. Ele contém 10 linhas, 2 palavras por linha.
$ gat amostra.TXT
Expressão regular
Um dos principais recursos que tornam o AWK uma ferramenta poderosa é o suporte da expressão regular (regex, para abreviar). Uma expressão regular é uma corda que representa um certo padrão de caracteres.
Aqui está uma lista de algumas das sintaxes de expressão regular mais comuns. Essas sintaxes regex não são apenas exclusivas para estragar. Essas são sintaxes de regex quase universais, portanto, dominá -las também ajudará em outros aplicativos/programação que envolve expressão regular.
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, impressiona todas as linhas.
$ awk 'print' amostra.TXT
Aqui, "Print" é um comando AWK que imprime o conteúdo da entrada.
Pesquisa de string
Awk pode executar uma pesquisa básica de texto no texto fornecido. Na seção de padrões, deve ser o texto para encontrar.
No comando a seguir, a AWK procurará o texto "rápido" em todas as linhas da amostra de arquivo.TXT.
$ awk '/rápido/' amostra.TXT
Agora, vamos usar algumas expressões regulares para ajustar ainda mais a pesquisa. O comando a seguir imprimirá todas as linhas que têm "marrom" no começo.
$ awk '/^brown/' amostra.TXT
Que tal encontrar algo no fim de uma linha? O comando a seguir imprimirá todas as linhas que têm "rápido" no final.
$ awk '/rápido $/' amostra.TXT
Padrão de curinga
O próximo exemplo vai mostrar o uso do caret (.). Aqui, pode haver dois caracteres antes do personagem "e".
$ awk '/… e/' amostra.TXT
Padrão de curinga (usando asterisco)
E se houver algum número de caracteres no local? Para corresponder a qualquer personagem possível na posição, use o asterisco (*). Aqui, o AWK corresponderá a todas as linhas que têm qualquer quantidade de caracteres após "o".
$ awk '/the*/' amostra.TXT
Expressão do suporte
O exemplo a seguir vai mostrar como usar a expressão do suporte. A expressão de suporte diz que, no local, a partida será válida se corresponder ao conjunto de caracteres fechados pelos colchetes. Por exemplo, o comando a seguir corresponderá a "The" e "Tee" como correspondências válidas.
$ awk '/t [ele] e/'.TXT
Existem alguns conjuntos de personagens predefinidos na expressão regular. Por exemplo, o conjunto de todas as letras maiúsculas é rotulado como "A-Z". No comando a seguir, a AWK corresponderá a todas as palavras que contêm uma letra de maiúsculas.
$ awk '/[a-z]/' amostra.TXT
Dê uma olhada no seguinte uso de conjuntos de personagens com expressão de suporte.
Variáveis predefinidas awk
Awk vem com um monte de variáveis predefinidas e automáticas. Essas variáveis podem facilitar os programas e scripts de escrita com awk.
Aqui estão algumas das variáveis mais comuns que você encontrará.
Vamos verificá -los em ação. O comando a seguir usará a variável NR para imprimir a linha 2 para a linha 4 da amostra.TXT. A 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 for uma string vazia, os registros serão separados por uma sequência que consiste em uma nova linha com uma ou mais linhas em branco. Em Posix, uma linha em branco sem conteúdo está completamente vazia. No entanto, se a linha contiver espaços em branco, não será considerada "em branco".
$ awk 'print' rs = "amostra.TXT
Recursos adicionais
Awk é uma ferramenta poderosa com toneladas de recursos. Enquanto este guia cobre muitos deles, ainda é apenas o básico. Dominar o Awk vai levar 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 conferir.
A internet é um bom lugar para aprender algo. Existem muitos tutoriais incríveis sobre o básico do AWK para usuários muito avançados.
Pensamento final
Felizmente, este guia ajudou a fornecer uma boa compreensão dos princípios básicos. Embora possa demorar um pouco, dominar o Awk é extremamente gratificante em termos do poder que concede.
Computação feliz!