Loading AI tools
linguagem de programação Da Wikipédia, a enciclopédia livre
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).
As referências deste artigo necessitam de formatação. (Junho de 2022) |
Este artigo ou secção contém uma lista de referências no fim do texto, mas as suas fontes não são claras porque não são citadas no corpo do artigo, o que compromete a confiabilidade das informações. (Setembro de 2013) |
AWK | |
---|---|
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 é 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.
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 = Imprime toda a linha dependendo do modo que use
#Sintaxe da utilização do AWK simples
awk ‘<padrao-acao>’ [arquivo_1] [arquivo_2]... [arquivo_n]
#Exemplo abaixo ele imprime 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
#Neste caso ele imprime 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
# No comando ele imprime 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
#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
# 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
# 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
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.