AWK
| AWK | |
|---|---|
AWK tem a mesma pronúncia de Auk, uma espécie de pássaro. |
|
| Paradigma | Linguagem de script, procedural, orientada a eventos |
| Surgido em | 1977 |
| Última versão | IEEE Std 1003.1-2004 (POSIX) / 1985 |
| Criado por | Alfred Aho, Peter Weinberger, and Brian Kernighan |
| Estilo de tipagem: | Estática e Fraca |
| Influenciada por | C, SNOBOL4, Bourne shell |
| Influenciou | Tcl, AMPL, Perl, Korn Shell (ksh93, dtksh, tksh), Lua |
A linguagem de programação AWK foi criada em 1977 pelos brilhantes cientistas Alfred Aho, Peter J. Weinberger e Brian Kernighan no laboratório Bell Labs , o significado da palavra AWK é o conjunto das iniciais dos sobrenomes dos criadores da linguagem.
A linguagem é interpretada linha por linha e tem como principal objetivo deixar os scripts de Shell no Unix/Linux 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). Ela é muito utilizada para processar dados com textos e manipulações com arquivos.
Utilizada frequentemente pelos desenvolvedores para processar textos e manipular arquivos e fora que ela é baseada nos comandos de C/C++. Tem como os paradigmas Linguagem de script, procedural e orientada a eventos.
Esta linguagem foi muito importante para história da programação, por que foi um ponto inicial para outros cientistas criarem outras linguagens, como por exemplo: Perl e Python.
Índice |
Bibliografia sobre os criadores [editar]
Alfred V. Aho [editar]
Alfred V. Aho foi um dos melhores cientistas da computação. Ele como pesquisador, gestor e educador ofereceram muitas vantagens para a tecnologia (ajudou a criar a linguagem AWK). Suas pesquisas inovaram em muitas linguagens formais e sua teoria sobre compiladores levou a criar algoritmos de chave para ferramentas modernas sequência de correspondência de padrões. Seus algoritmos são utilizados em ferramentas de compilador amplamente utilizados e construção, tais como YACC LEX, que foram utilizados para conceber muitas linguagens de programação de computador.
Dr. Aho conduziu pesquisas na Bell Labs , em Murray Hill, NJ, 1967-1991. Durante esse tempo, ele desenvolveu algoritmos eficientes para aplicações para processamento de texto e traduções sobre linguagem de programação. Seus algoritmos influenciou o projeto de compiladores C, o que facilitou a portabilidade do sistema operacional UNIX de minicomputadores a supercomputadores. Ele trabalhou na Bellcore, em Murray Hill, NJ, a partir de 1991-1995 e, em seguida, tornou-se professor de ciência da computação na Universidade de Columbia, em Nova York. Ele mais tarde se juntou a Lucent Technologies, em Murray Hill, NJ, como um presidente associado de pesquisa e vice-vice-presidente de pesquisa de ciências de computação. Em 2002, ele voltou para a Columbia como professor de ciência da computação e é presidente do Departamento de Ciência da Computação.
O Sr. Aho escreveu vários livros didáticos mais utilizados ciência da computação, incluindo o Projeto e Análise de Algoritmos de computador; Compiladores: Princípios, Técnicas e Ferramentas, e da linguagem de programação AWK. Ele atuou em muitas comissões de profissionais, incluindo os EUA Comissão Nacional do Conselho de Pesquisa em Alfabetização de Tecnologia da Informação e do Comité Consultivo da Fundação Nacional de Ciência Computação e Ciência da Informação e Diretoria de Engenharia. De 1992-1994, ele também foi editor da revista Proceedings, da IEEE.
Peter Jay Weinberger [editar]
Peter Jay Weinberger (nascido em 6 de agosto de 1942) é um cientista da computação mais conhecido por seu trabalho inicial no laboratório Bell Labs , e atualmente ele trabalha empresa Google.
Weinberger era um estudante na Swarthmore College , graduando-se em 1964. Ele recebeu seu doutorado em matemática em 1969 pela Universidade da Califórnia, em Berkeley, sob Derrick Henry Lehmer para uma tese intitulada "Prova de uma conjectura de Gauss na Classe Número Dois". Depois de ocupar um cargo no Departamento de Matemática da Universidade de Michigan, Ann Arbor, onde continuou seu trabalho em teoria analítica dos números , ele se mudou para a AT & T Bell Labs .
Na Bell Labs, Weinberger contribuiu para o projeto da pioneira linguagem de programação AWK . Uma explicação detalhada de suas contribuições para AWK e outras ferramentas Unix é encontrada em uma transcrição da entrevista na Universidade de Princeton. Outra entrevista Laurianne McLaughlin. Antes de entrar para o Google, Weinberger foi diretor de tecnologia da Renaissance Technologies.
Brian Kernighan [editar]
Brian Wilson Kernighan (nascido 01 de janeiro de 1942) é um canadense cientista da computação que trabalhava na Bell Labs ao lado Unix criadores Ken Thompson e Dennis Ritchie e contribuíram para o desenvolvimento do Unix . Ele também é um dos autores do AWK e AMPL linguagens de programação.
O Kernighan tornou-se conhecido autor do primeiro livro sobre a linguagem de programação C com Dennis Ritchie . Kernighan disse que ele não tinha parte do projeto da linguagem C . Ele foi o autor muitas programas de Unix, incluindo ditroff , e cron para Unix Versão 7 .
Kernighan foi o editor de software para Prentice Hall Internacional . Sua "Ferramentas de Software" série espalhar a essência do "pensamento C / Unix" com reformas para BASIC , FORTRAN e Pascal - e principalmente sua ' Ratfor "(racional FORTRAN) foi colocada em domínio público.
Variantes do AWK [editar]
- BWK: conhecido também 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 que Kernighan foi um dos autores originais do AWK. Esta versão é usada por exemplo FreeBSD , NetBSD , OpenBSD e Mac OS X .
- GAWK:(GNU AWK) é outra implementação do software livre (OPEN SOURSE) e da implementação único que faz grandes progressos implementação de internacionalização e localização e redes TCP / IP. Ele foi escrito antes da implementação original tornou-se livremente disponível. 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 para estender a funcionalidade através de bibliotecas compartilhadas. As distribuições Linux são em sua maioria de software GNU, e assim eles incluem 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 GNU General Public License licença (GPL), bem como por suas características técnicas.
- MAWK:é uma versão muito mais rápida 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 acelerado 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 software 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 GAWK com bibliotecas carregadas dinamicamente.
- QSEAWK:é uma implementação intérprete incorporado 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 completo, escrito por Dmitry Zakharov. Esta é uma implementação muito pequeno adequado para sistemas embarcados.
Variáveis da Linguagem [editar]
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.
-rw-r--r-- 1 Usuario root 7022 Jul 20 2011 Cygwin.ico -rwxr-xr-x 1 Usuario root 57 Jul 20 2011 Cygwin.bat drwxr-xr-x+ 1 Usuario root 0 Jul 21 2011 opt $1 $2 $3 $4 $5 $6 $7 $8 $9 #$0 = Imprimi toda a linha dependendo do modo que use
Exemplos de código [editar]
Sintaxe [editar]
#Sintaxe da utilização do AWK simples awk ‘<padrao-acao>’ [arquivo_1] [arquivo_2]... [arquivo_n]
Exemplo 1 [editar]
#Exemplo abaixo ele imprimi todos os clientes do arquivo lista_clientes (dentro do ambiente Unix/Linux) bash-4.1$ awk '{print $0}' lista_clientes Claudia Maria Salvador 555-6666 Eduardo Silva Campinas 222-3333 Juliano Mendes Manaus 333-2222 Luiz Carlos Curitiba 777-9999 Mario Sergio Florianopolis 888-7777 Maria Julia Salvador 666-8888
Exemplo 2 [editar]
#Neste caso ele imprimi somente o primeiro nome do cliente e o seu telefone referenciado bash-4.1$ awk '{print $1,$4}' lista_clientes Claudia 555-6666 Eduardo 222-3333 Juliano 333-2222 Luiz 777-9999 Mario 888-7777 Maria 666-8888
Exemplo 3 [editar]
# No comando ele imprimi toda linha que tiver a letra M bash-4.1$ awk '/M/ {print}' lista_clientes Claudia Maria Salvador 555-6666 Juliano Mendes Manaus 333-2222 Mario Sergio Florianopolis 888-7777 Maria Julia Salvador 666-8888
Exemplo 4 [editar]
#AWK sendo utilizado em conjunto com o comando Unix ls –ltr retornando os nomes dos arquivos do argumento $9 bash-4.1$ ls -ltr | awk '{print $9}' Cygwin.ico Cygwin.bat opt usr sbin home lib var srv dev etc Documentos_Linux bin tmp proc cygdrive
Exemplo 5 [editar]
# AWK sendo utilizado em conjunto com o comando Unix ls –ltr e o comando if/else retornando os nomes dos diretórios/arquivos # com a ultima modificação em 2011. Lembrando que ele pode ser utilizado em conjunto com qualquer # comando em unix, por exemplo os comandos: cat, more, ls e entre outros. bash-4.1$ ls -ltr | awk '{if ($8 == "2011") print ($0)}' -rw-r--r-- 1 Usuario root 7022 Jul 20 2011 Cygwin.ico -rwxr-xr-x 1 Usuario root 57 Jul 20 2011 Cygwin.bat drwxr-xr-x+ 1 Usuario root 0 Jul 21 2011 opt drwxr-xr-x+ 1 Usuario root 0 Jul 21 2011 usr drwxr-xr-x+ 1 Usuario root 0 Jul 21 2011 sbin drwxrwxrwt+ 1 Usuario root 0 Jul 21 2011 home drwxr-xr-x+ 1 Usuario root 0 Jul 21 2011 lib drwxr-xr-x+ 1 Usuario root 0 Jul 21 2011 var drwxr-xr-x+ 1 Usuario None 0 Jul 21 2011 srv drwxr-xr-x+ 1 Usuario None 0 Jul 21 2011 dev drwxrwxr-x+ 1 Usuario root 0 Jul 21 2011 etc drwxrwxrw-+ 1 Usuario None 0 Jul 21 2011 Documentos_Linux
Exemplo 6 [editar]
# O script inicializará a variável i com 1 e o comando while, enquanto o valor de i for menor ou # igual ao número de campos da linha atual, irá imprimir # (print) cada campo em uma linha diferente, acrescentando 1 a i após a # impressão (print). ./camposcar.awk awk ‘{ i = 1 while ( i <= NF ) { print $ i ++ } }’ carros
Referências
- http://people.cs.uu.nl/piet/docs/nawk/nawk_toc.html
- http://www.zago.eti.br/script/awk.html
- http://cvsserver.cnptia.embrapa.br/files/doc103_10_0.pdf
- http://www.vivaolinux.com.br/artigo/AWK-Introducao
- http://pt.wikipedia.org/wiki/Bell_Labs
- http://awk.freeshell.org/
- http://www.staff.science.uu.nl/~oostr102/docs/nawk/nawk_2.html
- http://www.lpic.com.br/shell/comandos/awk/print/print.pdf
- https://en.wikipedia.org/wiki/Alfred_Aho
- http://en.wikipedia.org/wiki/Peter_J._Weinberger
- http://en.wikipedia.org/wiki/Brian_Kernighan
- http://www.staff.science.uu.nl/~oostr102/docs/nawk/nawkA4.pdf
Bibliografia [editar]
- AHO, Alfred V.; KERNIGAN, Brian K.; WEINBERGER, Peter J.. The AWK Programming Language. Reading, Massachusetts, EUA: Addison-Wesley, 1988. 210 p. ISBN 0-201-07981-X
- DOUGHERTY, Dale; ROBBINS, Arnold. Sed & Awk. Beijing: O´Reilly, 1997. 407 p. ISBN 1-56592-225-5
