terça-feira, 12 de julho de 2016

Hardcore Devel #61 - GNU AWK

E lá vamos nós desenvolvendo de forma pesada novamente.


Segura esse boi ae pra vc sentir o peso da coisa.

Você talvez já tenha visto esse boi anteriormente, e portanto deve saber que isso na verdade é um gnu, que é um ruminante como um boi, mas é diferente. Se você curte a idéia do open source então já deve saber que esse boi(gnu) aí é a estampa do projeto GNU, que encabeça o movimento do código aberto. Aconselho vocês a dar um pulo no site do projeto. Que nada mais é que um projeto de um sistema operacional de código aberto.

Bom, mas o nosso foco não é o GNU e sim uma das coisas mais incríveis que eles fizeram: O AWK. Que foi aprimorado a rodo e hoje tem até uma versão pra Windows. Eu uso bastante o AWK até pra facilitar no trabalho mesmo. Se você acha que aquelas aulas e programação são um saco, é porque você nunca teve que cruzar tabelas com mais de 1000 linhas cada.

"Ah, mas pra cruzar tabela eu uso SQL!" - Isso é perfeitamente válido. O problema é que nem sempre as suas tabelas vão estar em um banco de dados SQL, e é aí que entra o jogo da programação. A primeira coisa que você deve estar me perguntando é - "quem é o louco que não coloca tabelas num servidor de SQL?" - a resposta é simples. Qualquer pessoa que faça uma aplicação cujo propósito não seja armazenar registros. Na verdade existe uma série de razões para usar SQL e para não usar, mas isso não vem ao caso.

O AWK é um software para tratamento de texto. Você escreve um script em uma linguagem específica, muito similar ao C(E o que não é similar ao C?), e o AWK vai processar aquele script pra cada linha de um determinado arquivo. Na criação do AWK ele lia um arquivo só, então o seu processamento ficava um pouco mais difícil do que é hoje, onde ele consegue ler diversos arquivos de uma vez só.

O software executa um bloco de comando para cada linha de cada arquivo. O primeiro bloco é um preâmbulo, e você sempre pode adicionar um toque final, mas o grande lance é que cada bloco de comando entre esses dois, será executado para cada linha de cada arquivo, a não ser é claro que você coloque algumas condicionais aí interessantes de variáveis de ambiente.

A velocidade com a qual esse programa itera pelas linhas dos arquivos é absurda. Arquivos de mais de 20000 linhas cada são processados em segundos. E tabelas separadas por caracteres especiais(CSV), são especialmente simples de serem tratadas. Se você precisa tratar arquivos de texto grande e cruzar informações entre eles, recomendo muito o uso desse software. Economiza muito tempo.


Imagens:
https://gnu.org


Nenhum comentário:

Postar um comentário