Ola pessoal, irei mostrar neste post a utilidade do awk. Antes é preciso entender que o awk é nada mais do que uma linguagem interpretada frequentemente utilizada para processar,filtrar dados com textos, realizar consultas, gerar scripts e entre outras funcionalidades de busca.
1º – Criei um arquivo para exemplificarmos o comando com o seguinte conteúdo :
Componente / Preço / ID hard.drive,80.00,id=123 processador,300.00,id=321 placa.mae,400.00,id=124 fonte,500.00,id=350 gabinete,200.00,id=540 gabinete1,250.00,id=541 gabinete2,100.00,id=542 mouse,30.00,id=451 mouse1,10.00,id=390 mouse2,30.00,id=598 teclado,20.00,id=657 teclado1,25.00,id=243 teclado2,30.00,id=8762º – Imprimindo campos com um filtro especifico :
# awk '/gabinete/' /root/awk
Neste exemplo, “gabinete” sera a palavra a ser buscada dentro do arquivo awk, assim,todas as linhas que conterem esta palavra serão impressas na tela. Exemplo :
gabinete,200.00,id=540 gabinete1,250.00,id=541 gabinete2,100.00,id=5423º Comando Print : Suponhamos que haja a necessidade de visualização somente dos campos “componente” e “id”. Utilizando o comando print é possível imprimir somente os campos específicos solicitados.
Exemplo :
# awk -F "," '/gabinete/ {print $1,$3;}' /root/awkgabinete id=540 gabinete1 id=541 gabinete2 id=542
As sintaxes $1 e $3 são os campos 1 e 3. O que ocasiona a divisão destes campos é a opção -F seguida pela sintaxe “,” , a qual determina que a divisão dos campos sera por virgula.
*Obs: note que a “,” foi usada para este exemplo mas é cabível outras opções de separação.
4º OFS : O comando OFS ( Output Field Separator ) tem a função de aplicar uma separação de campos na saída de um comando.
Exemplo :
# awk -F "," '/teclado/ {OFS="\t";print $1,$3;}' /root/awk
teclado id=657
teclado1 id=243 teclado2 id=876Note que o comando OFS veio seguido da sintaxe =”\t”. O comando entre parênteses representa um “tab” como espaçamento,mas é possível colocar quaisquer outros tipos de critérios de separação.
5º – Condição IF : É possível tratar algumas condições com o awk, neste post irei tratar a condição “if”.
Exemplo :
# awk -F "," '{if($2~"10.00")print}' /root/awkmouse1,10.00,id=390
Neste exemplo, estou pesquisando no campo 2 ($2) se há algum produto de valor igual ( ~) á 10.00 (“10.00”).
6º – BEGIN/END : As sintaxes BEGIN e END são utilizadas para executar uma ação no inicio ou no fim antes da leitura do comando. Neste exemplo, os campos “Componentes,preço e ID” serão impressos em primeiro plano através do BEGIN e o END sendo utilizado para imprimir “Fim do comando” logo depois da saída dos comandos.
# awk -F "," 'BEGIN { print "Componente\tPreço\tID" } {OFS="\t";print $1,$2,$3 } END { print "Fim do Comando" } ' /root/awkComponente Preço ID hard.drive 80.00 id=123 processador 300.00 id=321 placa.mae 400.00 id=124 fonte 500.00 id=350 gabinete 200.00 id=540 gabinete1 250.00 id=541 gabinete2 100.00 id=542 mouse 30.00 id=451 mouse1 10.00 id=390 mouse2 30.00 id=598 teclado 20.00 id=657 teclado1 25.00 id=243 teclado2 30.00 id=876 Fim do Comando
Bom pessoal, espero ajudar de alguma forma, e vir a falar em breve um pouco mais sobre outras utilidades do awk. Até a próxima.
Comentários