Você sabia que o AWK faz isso? 6 dicas para iniciantes
Hey \o
Hoje quero mostrar pra você algumas coisas que dá pra fazer com o AWK, como sempre de forma rápida, simples, objetiva e sem blá blá blá
Partes deste post foi retirada de um post em inglês do GeeksForGeeks que você pode ver ele completo aqui
Antes de mais nada, você precisa saber para o que você pode usar o AWK
Primeiro vamos criar um arquivo de exemplo. (Sim ele tem linhas vazias e duplicadas para os exemplos)
cat <<EOF > colaboradores.txt
NOME CARGO PERMISSAO ID
Renato devops admin 25000
Ciclano gerente view 50000
Beltrano gerente admin 47000Javalino desenvolvedor view 15000
Jenkao devops view 23000
Jenkao devops view 23000Peagape desenvolvedor view 13000
JoaoBoss diretor admin 80000
JoaoBoss diretor admin 80000
EOF
Dica 1: Exiba as linhas que contenha um padrão ou uma palavra específica
Comando:awk '/devops/ {print}' colaboradores.txtSaída:
Renato devops admin 25000
Jenkao devops view 23000
Dica 2: Exiba apenas os campos desejados
Comando:awk '{print $1,$3}' colaboradores.txtSaída:
NOME PERMISSAO
Fulano admin
Renato admin
Ciclano view
Beltrano admin
Javalino view
Jenkao view
Peagape view
JoaoBoss admin
Váriáveis internas do AWK
As variáveis internas do Awk incluem as variáveis de campo $1, $2, $3 e assim por diante ($0 é a linha inteira) que dividem uma linha de texto em palavras ou partes individuais chamadas campos. temos algumas outras também que são: NR: Exibe o número da linha do arquivo NF: Mantém uma contagem do número de campos na linha atual. FS: Mostra o caractere separador de campo usado para dividir os campos na linha de entrada. (O padrão é “espaço em branco”). Existem muitas outras que não vem ao caso aqui, mas vale muito a pena conhecer.
Dica 3: Verificar se em uma coluna tem uma string específica (Parecido com a dica 1, porém mais expecífico)
Nesse exemplo como eu sei qual é cada coluna, quero saber quais são as linhas que tem a PERMISSAO admin, pois na dica um eu poderia ter a string "admin" em outras colunas.
Comando:awk '{ if($3 == "admin") print $0;}' colaboradores.txtSaída:
Renato devops admin 25000
Beltrano gerente admin 47000
JoaoBoss diretor admin 80000
JoaoBoss diretor admin 80000
Dica 4: Remove o cabeçalho do arquivo
Comando:awk 'NR>2' colaboradores.txtSaída:
Ciclano gerente view 50000
Beltrano gerente admin 47000Javalino desenvolvedor view 15000
Jenkao devops view 23000
Jenkao devops view 23000Peagape desenvolvedor view 13000
JoaoBoss diretor admin 80000
JoaoBoss diretor admin 80000
Dica 5: Remove linhas vazias
Comando:awk NF colaboradores.txtSaída:
NOME CARGO PERMISSAO ID
Renato devops admin 25000
Ciclano gerente view 50000
Beltrano gerente admin 47000
Javalino desenvolvedor view 15000
Jenkao devops view 23000
Jenkao devops view 23000
Peagape desenvolvedor view 13000
JoaoBoss diretor admin 80000
JoaoBoss diretor admin 80000
Dica 6: Remove linhas duplicadas
Comando:awk NF colaboradores.txt | uniqSaída:
NOME CARGO PERMISSAO ID
Renato devops admin 25000
Ciclano gerente view 50000
Beltrano gerente admin 47000
Javalino desenvolvedor view 15000
Jenkao devops view 23000
Peagape desenvolvedor view 13000
JoaoBoss diretor admin 80000
Dica extra: Essa é mais avançado, porém é pra te deixar com mais vontade de saber mais sobre o AWK essa ferramenta incrível, olha só!
Comando:awk 'NF { printf "%-10s\t %-10s\t %-10s\t \n", $1, $2, $3, $3 }' colaboradores.txtSaída:
NOME CARGO PERMISSAO
Renato devops admin
Ciclano gerente view
Beltrano gerente admin
Javalino desenvolvedor view
Jenkao devops view
Jenkao devops view
Peagape desenvolvedor view
JoaoBoss diretor admin
JoaoBoss diretor admin
Ficou com alguma dúvida? Quer mais dicas como essa? Não gostou ou acha que tem algo que poderia melhorar? fale comigo :) aqui
Valew!