Ir para o conteúdo
  • Materiais
    • Ebook – Ubuntu Linux
    • Ebook – Como Usar Virtualbox
    • Ebook – Kali Linux – Guia de Instalação e Configuração de um Ambiente para Hacking
    • Ebook – O Guia Rápido Sobre Servidor WEB com Apache
    • Ebook – Como Criar Um Servidor Proxy Com Squid
    • Ebook – Apache vs Nginx – O confronto entre os dois servidores web mais utilizados no Linux
    • Ebook – Firewall Com pfSense – Guia para Iniciantes
    • Ebook – Amazon EC2 – Como Criar Seu Primeiro Servidor Na Nuvem
    • Ebook – 10 Shell Script para ADM Linux
  • Sobre
  • Cursos
Menu
  • Materiais
    • Ebook – Ubuntu Linux
    • Ebook – Como Usar Virtualbox
    • Ebook – Kali Linux – Guia de Instalação e Configuração de um Ambiente para Hacking
    • Ebook – O Guia Rápido Sobre Servidor WEB com Apache
    • Ebook – Como Criar Um Servidor Proxy Com Squid
    • Ebook – Apache vs Nginx – O confronto entre os dois servidores web mais utilizados no Linux
    • Ebook – Firewall Com pfSense – Guia para Iniciantes
    • Ebook – Amazon EC2 – Como Criar Seu Primeiro Servidor Na Nuvem
    • Ebook – 10 Shell Script para ADM Linux
  • Sobre
  • Cursos

AWK: Como Otimizar E Adicionar Recursos Ao Shell Script No Linux

  • pedrodelfino

Compartilhe este post

Share on facebook
Share on linkedin
Share on twitter
Share on email

O AWK (ou GNU AWK) é uma linguagem de programação criada no fim dos anos 70 e utilizada até hoje, sobretudo no ambiente Linux. A forte conexão com o Linux se dá pelo uso na incrementação e otimização dos recursos presentes no shell. Mas a que ponto ele pode se tornar necessário?

Primeiramente, consideremos a vasta gama de emuladores / interpretadores do terminal do Linux. Eles têm funcionalidades interessantes para aprimorar o shell, desde a customização visual à adição de atalhos, por exemplo. Contudo, a otimização não faz com que o terminal transcenda os seus limites.

Temos de destacar, também, a possibilidade de escrevermos linhas de código para aplicar funções, como o uso do comando sed Linux e de elementos bash script — quanto a isso, recomendo a leitura deste artigo sobre programação shell script. Sem dúvidas, a prática torna o ambiente bastante funcional, porém as limitações ainda existem.

Justamente quando acredita-se que o shell não é capaz de ser explorado a níveis mais profundos, eis que entra em cena o AWK. A ideia deste artigo é apresentar essa linguagem de script e alguns comandos básicos. Ficou interessado em saber mais? Então vamos começar!

awk linguagem programação para shell

Entendendo a linguagem AWK

No site do Linux (linux.com), o AWK é definido como linguagem de programação de correspondência de padrões (expressões regulares), a qual permite escrever linhas de comando para que o sistema faça diversos tipos de tarefas. Legal, mas o que são tais expressões?

Concisamente, a expressão regular é um mecanismo de identificação de cadeias de caracteres. Por meio deste, auxiliado por um processador (engine) responsável pela interpretação dos códigos, são filtradas determinadas informações que se encaixam em um padrão textual — é como quando acionamos no browser a ferramenta find.

Quando os padrões correspondem, uma linguagem como a AWK permite ao programador, por exemplo, definir ações a serem aplicadas na determinada linha, edite uma seção de um arquivo de configuração, modifique um script etc.

Por outro lado, se o AWK não encontrar nenhuma correspondência de padrões, nenhuma ação é executada. Contudo, se ele identifica os caracteres, mas o usuário não determinou nenhuma ação, será aplicado o comando print.

Origem e utilidade da linguagem AWK

A origem do nome está relacionada às iniciais de Aho (Alfred), Weinberger (Peter) e Kernighan (Brian), acrônimo associado ao sobrenome de cada um dos desenvolvedores e que, curiosamente, forma a pronúncia “auk”, a qual se refere, também, a uma espécie de ave semelhante ao pinguim.

Baseada em C, a linguagem AWK é bastante considerada na história da programação, visto que ela influenciou no desenvolvimento de outras linguagens relevantes, como a Perl. Contudo, a peculiaridade do AWK é o seu uso para estender as funcionalidades do Shell Script.

Utilizando as expressões dessa linguagem, cuja sintaxe é relativamente simples, o usuário consegue incrementar os scripts de shell. Com isso, é possível acrescentar recursos de aprimoramento, bem como funcionalidades específicas para atender às suas necessidades.

Possibilidades oferecidas pela linguagem AWK

Usando essa linguagem de script, é possível fazer coisas incríveis por meio do processamento de texto, como a definição de variáveis e operações matemáticas, sem a necessidade de compilação.

Podemos, por exemplo, analisar todas as linhas de um arquivo e transformá-lo, produzir relatórios formatados, inserir condicionais e loops, entre outras tarefas. Certamente, você não imaginou que elas fossem possíveis de executar no ambiente shell, não é mesmo?

Supondo que o usuário queira analisar um arquivo de texto (chamado “corpo-docente.txt”) e nele identificar determinados elementos. Normalmente, o documento seria aberto e, então, lido pelo usuário por meio do comando cat.

$ cat corpo-docente.txt

Output:

Abraham Lincoln – Ciência Política

Anthony Edward Stark – Administração e Negócios

Bruce Wayne – Administração e Negócios

John Forbes Nash Jr. – Matemática

Wolfgang Amadeus Mozart – Música

Percebe-se que estamos falando de uma universidade cujo corpo docente é formado por grandes nomes da arte, da história e da cultura pop. No entanto, há disciplinas com mais de um professor, como no caso do curso de Jornalismo.

Se o usuário, sem vasculhar o conteúdo, deseja saber quem são esses professores em MBA, com o AWK, é possível chegar a tais elementos por meio de um tipo de pesquisa. Exemplo:

$ awk '/Jornalismo/ {print}' corpo-docente.txt

Output:

Clark Kent – Jornalismo

Eddie Brock – Jornalismo

Agora, pense que o mesmo procedimento é aplicável em um arquivo que contém milhares de dados, retornando os resultados de busca instantaneamente? Isso é uma amostra das possibilidades trazidas pelo AWK.

Construção de variáveis com o AWK

No presente tópico, vamos aprender a fazer alguns processos básicos com o AWK; mais precisamente o uso de variáveis. Comecemos pela apresentação de dois comandos de variáveis bastante utilizados:

  • NF (number of fields): quando acionado, o NF indica a quantidade de campos presente em cada linha, por exemplo;
  • NR (number of records): retorna o número total de registros processados ou quantidade de linhas no arquivo;

Agora, vejamos alguns exemplos práticos. Para isso, vamos retomar a lista de célebres professores com objetivo de filtrar algumas informações (os dois primeiros nomes de cada).

$ awk '{print $0,$1}' corpo-docente.txt

Output:

Abraham Lincoln

Albert Einstein

Anthony Edward

Bruce Wayne

Clark Kent

Eddie Brock

John Forbes

Rocky Balboa

Stephen Hawking

Walter White

Wolfgang Amadeus

Se quisermos que apenas imprimir os nomes entre a quarta e a sétima linha, basta digitar a linha de comando, abaixo:

$ awk 'NR==4, NR==7 {print NR,$0}' corpo-docente.txt

Output:

Bruce Wayne – Administração e Negócios

Clark Kent – Jornalismo

Eddie Brock – Jornalismo

John Forbes Nash Jr. – Matemática

Também podemos solicitar a exibição de linhas com limite mínimo de caracteres. Por exemplo (nesse caso, linhas com mais de 30 caracteres):

$ awk 'length($0) > 30' corpo-docente.txt

Output:

Abraham Lincoln – Ciência Política

Anthony Edward Stark – Administração e Negócios

Bruce Wayne – Administração e Negócios

John Forbes Nash Jr. – Matemática

Wolfgang Amadeus Mozart – Música

Daqui em diante, experimente praticar a sintaxe do AWK e seus comandos até que consiga aplicar otimizações no shell script. Somente com o conteúdo básico abordado no artigo já é possível agilizar muitas atividades no shell. Preparado para seguir em frente?

Se o aprendizado em Linux tem imposto muitos obstáculos, talvez esteja na hora de contar com o suporte de materiais ricos e que ensinam o essencial para dominar esse poderoso sistema operacional. Visite agora a página do Profissional Linux e saiba mais!

Compartilhe este post

Share on facebook
Share on linkedin
Share on twitter
Share on email
PrevAnteriorTerminal Linux: Tudo O que Você Precisa Saber Para Iniciar Agora Mesmo
PróximoTCPDUMP: Como Analisar O Tráfego De Rede De Forma Simples E PráticaNext

Artigos Recentes

Ext4 versus Btrfs: Qual é o Melhor Sistema de Arquivos No Linux?

Escolher o sistema de arquivos certo é crucial para a performance e confiabilidade de um sistema operacional. Entre os sistemas mais utilizados no Linux, Ext4

pedrodelfino

Sockets: Tudo o que Você Precisa Saber

Se você é um administrador de sistemas iniciante e já se perguntou como os dados são transferidos na internet, você não está sozinho. A solução

pedrodelfino
"Um dos projetos que criei já ajudou mais de 110 mil pessoas a aprender LINUX ..."
pedro Delfino
FUNDADOR DO PROFISSIONAIS LINUX

Sobre Pedro Delfino

FUNDADOR DO PROFISSIONAIS LINUX​

Eu sou Pedro Delfino que durante os últimos 18 anos estive envolvido em implantações de soluções de TI utilizando LINUX, enquanto estava á frente de uma equipe de TI.

Fundador do Profissionais Linux que hoje já conta com mais de 2100 alunos, fui o responsável por diversos projetos de sucesso, todos eu sempre foquei o resultado em primeiro lugar, ou seja, sempre quando crio uma nova solução com Linux que será implantada estou procurando um objetivo especifico.

quero acessar agora

MENU

  • Cursos
  • Materiais
  • Blog
  • Contato

redes SOCIAIS

Facebook-f Instagram

Aprenda a dominar o Linux de uma vez por todas

QUERO MINHA CÓPIA GRÁTIS

Aprenda a dominar o Linux de uma vez por todas