# AWK

A linguagem de programação AWK foi criada em 1977 pelos cientistas Alfred Aho, Peter J. Weinberger e Brian Kernighan no laboratório Bell Labs. A palavra AWK é uma abreviatura das iniciais dos sobrenomes dos criadores da linguagem (Aho, Weinberger e Kernighan).
A linguagem é interpretada linha por linha e tem como principal objetivo deixar os scripts de Shell em sistemas POSIX mais poderosos e com muito mais recursos sem utilizar muitas linhas de comando, podendo resolver infinidades de problemas do dia-a-dia do desenvolvedor nesses sistemas operacionais.
Baseada na linguagem C, é utilizada frequentemente por desenvolvedores para processar textos e manipular arquivos. Tem como os paradigmas linguagem de script, procedural e orientada a eventos.
Esta linguagem é considerada por muitos um importante marco para história da programação, tendo tido bastante influência na criação de outras linguagens de programação, como Perl e Lua.

## Variantes do AWK

* BWK: conhecido também como AWK ou NAWK se refere à versão por Brian Kernighan. Ele foi apelidado de "Um AWK True" por causa do uso do termo em associação com o livro que originalmente descrita a linguagem e o fato de Kernighan ter sido um dos autores originais do AWK. Esta versão é usada por exemplo nos sistemas operativos FreeBSD, NetBSD, OpenBSD e OS X .
* GAWK: (GNU AWK) é outra implementação do software livre (open source) e de implementação única que fez grandes progressos na implementação de internacionalização e localização de redes TCP/IP. Ele foi escrito antes da implementação original ter se tornado livre. Ela inclui o seu próprio depurador, e seu perfil permite ao usuário fazer melhorias de desempenho medidos para um script, e também permite que o usuário possa estender as funcionalidades através de bibliotecas compartilhadas. As distribuições Linux são em sua maioria de software GNU, e assim eles podem incluir GAWK. FreeBSD antes da versão 5.0 também incluiu GAWK versão 3.0, mas as versões posteriores do FreeBSD uso BWK para evitar a mais restritiva licença GNU General Public License (GPL), bem como por suas características técnicas.
* MAWK: é uma versão muito mais rápida da implementação AWK por Mike Brennan com base em um código de bytes intérprete.
* LIBAWK: é um fork (comando para criar threads de um processo) do MAWK, permitindo que os aplicativos para incorporar várias instâncias paralelas de intérpretes AWK.
* AWKA: é outro tradutor de scripts AWK em código C. Quando compilado, estaticamente incluindo libawka.a do autor, os executáveis resultantes são consideravelmente acelerados e, de acordo com testes do autor, comparam muito bem com outras versões do AWK, Perl , ou Tcl . Pequenos scripts vão se transformar em programas de 160-170 Kb.
* TAWK: (Thompson AWK) é um AWK compilador para Solaris , DOS , OS/2 e do Windows , anteriormente vendido por Thompson softwares de automação.
* JAWK: é um projeto para implementar AWK em Java, hospedado no SourceForge, extensões à linguagem são adicionados para fornecer acesso a recursos do Java dentro de scripts AWK (ou seja, os encadeamentos Java, soquetes, Coleções, etc.)
* XGAWK: é um projeto baseado em SourceForge GAWK. Ela se estende pela GAWK mas com bibliotecas carregadas dinamicamente.
* QSEAWK: é uma implementação intérprete incorporada do AWK incluídos na biblioteca QSE que proporciona a incorporação de interface de programação de aplicação (API) para C e C++.
* BusyBox: inclui um pouco documentada implementação AWK que parece ser completa, escrito por Dmitry Zakharov. Esta é uma implementação muito pequena adequada para sistemas embarcados.

## Variáveis da Linguagem

Na Linguagem AWK são muitos utilizados argumentos já pre-definidos do sistema operacional (iremos utilizar linux). Criamos a tabela abaixo que ficará mais fácil de entender os próximos exemplos.