DEV Community

Isaias Velasquez
Isaias Velasquez

Posted on

How to usar awk e sed no processamento de texto do dia a dia

awk e sed sao dois comandos classicos do Unix que continuam sendo uteis mesmo com ferramentas modernas. Eles processam texto linha por linha sem precisar de scripts grandes.

Sed e um editor de texto nao interativo. O uso mais comum e substituicao:

sed 's/antigo/novo/g' arquivo.txt
Enter fullscreen mode Exit fullscreen mode

O s significa substituir, o g significa global (todas as ocorrencias na linha).

Para editar o arquivo direto:

sed -i 's/erro/ERRO/g' arquivo.txt
Enter fullscreen mode Exit fullscreen mode

Substituir em multiplos arquivos:

sed -i 's/pagina2antiga/paginanova/g' *.html
Enter fullscreen mode Exit fullscreen mode

Para deletar linhas que contem um padrao:

sed -i '/debug/d' arquivo.log
Enter fullscreen mode Exit fullscreen mode

O d deleta a linha inteira.

Para mostrar apenas as linhas 10 a 20:

sed -n '10,20p' arquivo.txt
Enter fullscreen mode Exit fullscreen mode

O -n suprime a saida padrao. O p imprime as linhas selecionadas.

Agora awk. Awk processa linhas como campos separados por espaco (ou outro delimitador):

awk '{print $1, $3}' arquivo.txt
Enter fullscreen mode Exit fullscreen mode

Isso imprime o primeiro e terceiro campo de cada linha.

Para usar outro delimitador, como CSV:

awk -F',' '{print $1, $2}' dados.csv
Enter fullscreen mode Exit fullscreen mode

Filtragem condicional:

awk '$3 > 100 {print $1, $3}' dados.txt
awk '/ERROR/ {print $1, $2, $NF}' sistema.log
Enter fullscreen mode Exit fullscreen mode

O $NF e o ultimo campo da linha.

Um exemplo pratico com logs Docker:

docker logs meu-container | awk '/ERROR/ {print $1, $2, $NF}'
Enter fullscreen mode Exit fullscreen mode

Para formatar saida de comandos:

ps aux | awk '{printf "%-10s %-6s %s\n", $1, $2, $11}'
Enter fullscreen mode Exit fullscreen mode

Awk tambem faz contas:

awk '{soma += $3} END {print "Total:", soma}' valores.txt
Enter fullscreen mode Exit fullscreen mode

O bloco END executa depois de processar todas as linhas.

Combinando awk e sed para limpar dados:

cat dados_sujos.csv | sed 's/"//g' | awk -F',' '{print $1, $2}'
Enter fullscreen mode Exit fullscreen mode

Sed remove as aspas duplas. Awk extrai as duas primeiras colunas.

Awk e sed resolvem problemas de processamento de texto em uma linha onde linguagens como Python exigiriam um arquivo separado. Para tarefas rapidas no terminal, eles sao insubstituiveis.

That's all for now.
Thanks for reading!

Top comments (0)