A linguagem
awk é muito conhecida por sua eficácia em criar filtros de conteúdos de arquivos. Nessa dica vou ensinar alguns truques que facilitarão a vida de todos.
Vamos tomar como base o arquivo leo.txt, que tem o seguinte conteúdo:
188 :2106102121 192.168.0.89
267 :2206211021 192.168.0.88
438 :2306211021 192.168.0.87
1. Preciso mostrar na tela a primeira coluna do arquivo:
$ cat leo.txt | awk '{print $1}'
188
267
438
Entendendo:
- print $1 -> Exibe a primeira coluna;
- print $2 -> Exibe a segunda coluna e assim por diante;
- print $NF ->Exibe a última coluna.
2. Em seguida me foi solicitado que contasse as linhas do resultado acima, para isso podemos utilizar outro comando após o resultado:
$ cat leo.txt | '{print $1}' | wc -l
3. Suponha que eu necessite vasculhar esse arquivo e mostrar apenas os campo com dia e mês, repare que na frente do dia existe um ":" que nos atrapalharia um pouco nessa busca. Vou usar o comando cat para mostrar que o awk pode ser combinado com os comandos do shell:
$ cat leo.txt | awk -F ":" '{print substr($2,1,4)}'
2106
2206
2306
Entendendo:
- awk -F ":" -> Ignora o caractere ":" da segunda coluna;
- {print substr($2,1,4)}' -> Exibe a segunda coluna do primeiro ao quarto caractere.
4. Agora eu gostaria que, após mostrar esse resultado, ele fizesse um filtro por uma data específica, vou tomar como seleção "2106":
$ cat leo.txt | awk -F ":" '{print substr($2,1,4)}' | grep 2106
2106
5. Vamos dificultar um pouco as coisas agora. Eu agora tenho um outro arquivo (leo2.txt) com o seguinte conteúdo:
183201
183202
183203
183204
183205
183206
183207
183208
183209
6. Me foi solicitado que fizesse um filtro para descobrir todos os campos de 18:32:02 até 18:32:08. Observe que aqui estaremos trabalhando com um intervalo. Então ficaria da seguinte forma:
$ cat leo2.txt | awk '{if (($1) >= "183202" && ($1) <= "183208") print}'
183202
183203
183204
183205
183206
183207
183208
Obs.: Neste último exemplo temos uma condição que deve ser atendida, se verdadeira, exibe o resultado encontrado.
Pessoal, espero ter ajudado. Em breve darei continuidade à dica com mais truques de Awk.