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
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
Substituir em multiplos arquivos:
sed -i 's/pagina2antiga/paginanova/g' *.html
Para deletar linhas que contem um padrao:
sed -i '/debug/d' arquivo.log
O d deleta a linha inteira.
Para mostrar apenas as linhas 10 a 20:
sed -n '10,20p' arquivo.txt
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
Isso imprime o primeiro e terceiro campo de cada linha.
Para usar outro delimitador, como CSV:
awk -F',' '{print $1, $2}' dados.csv
Filtragem condicional:
awk '$3 > 100 {print $1, $3}' dados.txt
awk '/ERROR/ {print $1, $2, $NF}' sistema.log
O $NF e o ultimo campo da linha.
Um exemplo pratico com logs Docker:
docker logs meu-container | awk '/ERROR/ {print $1, $2, $NF}'
Para formatar saida de comandos:
ps aux | awk '{printf "%-10s %-6s %s\n", $1, $2, $11}'
Awk tambem faz contas:
awk '{soma += $3} END {print "Total:", soma}' valores.txt
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}'
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)