Manipulação Avançada de Texto (sed, awk)
Explore o 'sed' para edição de fluxos e o 'awk' para processamento avançado de texto, busca por padrões e extração de dados.
Manipulação Avançada de Texto (sed, awk) é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.
Editando fluxos com sed
sed, abreviação de "editor de fluxo", é um utilitário poderoso de linha de comando para analisar e transformar textos. Ele processa fluxos de texto linha por linha. Pense nele como um editor de texto não interativo.
sed lê uma linha, aplica um comando (como substituição ou exclusão), exibe o resultado e, depois, passa para a próxima linha. Isso o torna muito eficiente para arquivos grandes ou dados recebidos por pipes.
Substituição simples de texto
O uso mais comum do sed é substituir textos. Usamos o comando s, seguido por um delimitador (geralmente /), o padrão a ser encontrado, outro delimitador, o texto de substituição e um delimitador final.
Sintaxe: sed 's/pattern/replacement/' filename
Experimente substituir "apple" por "orange" em um arquivo de exemplo:
#!/bin/bash
# Create a sample file
echo "I like red apple." > fruits.txt
echo "My favorite fruit is apple." >> fruits.txt
echo "Another apple here." >> fruits.txt
echo "Original content:"
cat fruits.txt
echo ""
echo "---"
echo "Running sed command:"
sed 's/apple/orange/' fruits.txt
# Clean up
rm fruits.txtGlobal e sem distinção entre maiúsculas e minúsculas
Por padrão, sed substitui apenas a primeira ocorrência de um padrão em cada linha. Para substituir todas as ocorrências em uma linha, use a opção g (global).
Para realizar uma pesquisa que não diferencie maiúsculas de minúsculas, use a opção i. Você pode combinar opções, como em gi.
Exemplo: substituir todas as ocorrências de "apple", sem diferenciar maiúsculas de minúsculas, por "banana".
#!/bin/bash
# Create a sample file
echo "Apple is good." > fruits.txt
echo "I eat an apple and another Apple." >> fruits.txt
echo "Apples are tasty." >> fruits.txt
echo "Original content:"
cat fruits.txt
echo ""
echo "---"
echo "Running sed command (s/apple/banana/gi):"
sed 's/apple/banana/gi' fruits.txt
# Clean up
rm fruits.txtExcluindo linhas com sed
Você também pode usar sed para excluir linhas inteiras que correspondam a um padrão específico. Para isso, usa-se o comando d.
Sintaxe: sed '/pattern/d' filename
Isso é útil para remover linhas indesejadas, como entradas de registro que contenham "DEBUG" ou linhas vazias.
Vamos remover as linhas que contêm "error":
#!/bin/bash
# Create a sample file
echo "INFO: User logged in." > log.txt
echo "WARNING: Disk space low." >> log.txt
echo "ERROR: File not found." >> log.txt
echo "INFO: Operation complete." >> log.txt
echo "ERROR: Permission denied." >> log.txt
echo "Original content:"
cat log.txt
echo ""
echo "---"
echo "Running sed command (/error/d):"
sed '/error/d' log.txt
# Clean up
rm log.txtawk: linguagem de varredura de padrões
awk é outra ferramenta avançada de processamento de texto, usada frequentemente para extração de dados e geração de relatórios. Enquanto sed é um editor de fluxo, awk se parece mais com uma linguagem de programação criada para trabalhar com texto.
awk processa arquivos de texto linha por linha, assim como sed. No entanto, ele trata cada linha como um "registro" e divide os registros em "campos" (colunas) com base em um separador.
Por padrão, awk usa espaços em branco (espaços e tabulações) como separador de campos.
Acessando campos de dados
No awk, os campos são referenciados por $1, $2, $3 e assim por diante. $0 representa a linha inteira.
Você pode imprimir campos específicos usando o comando print dentro de chaves {}. A sintaxe é: awk '{ print $FIELD_NUMBER }' filename
Vamos imprimir o primeiro e o terceiro campos de um arquivo de dados simples:
#!/bin/bash
# Create a sample file
echo "Name Age City" > data.txt
echo "Alice 30 NewYork" >> data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (print $1, $3):"
awk '{print $1, $3}' data.txt
# Clean up
rm data.txtFiltrando linhas com awk
Assim como sed, awk também pode filtrar linhas com base em padrões. Você especifica um padrão antes do bloco de ação. A ação será executada apenas nas linhas que corresponderem ao padrão.
Sintaxe: awk '/pattern/ { action }' filename
Vamos localizar e imprimir apenas os nomes das pessoas de "London":
#!/bin/bash
# Create a sample file
echo "Name Age City" > data.txt
echo "Alice 30 NewYork" >> data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "David 28 London" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (/London/ {print $1}):"
awk '/London/ {print $1}' data.txt
# Clean up
rm data.txtInicializando e finalizando com awk
awk permite especificar ações a serem executadas antes do processamento de qualquer linha (bloco BEGIN) e depois que todas as linhas tiverem sido processadas (bloco END).
Os blocos BEGIN são ótimos para imprimir cabeçalhos ou inicializar variáveis. Os blocos END são perfeitos para imprimir resumos, totais ou rodapés.
Vamos adicionar um cabeçalho e um rodapé à nossa saída:
#!/bin/bash
# Create a sample file
echo "Alice 30 NewYork" > data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (BEGIN/END):"
awk 'BEGIN { print "--- User Data ---" } { print $1, $2 } END { print "--- End Report ---" }' data.txt
# Clean up
rm data.txtLógica condicional no awk
Você pode usar instruções if nos blocos de ação do awk para aplicar lógica com base nos valores dos campos ou em outras condições. Isso torna o awk muito poderoso para filtragem e transformação complexas de dados.
Sintaxe: awk '{ if (condition) { action } }' filename
Vamos imprimir apenas os usuários com mais de 25 anos:
#!/bin/bash
# Create a sample file
echo "Alice 30 NewYork" > data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "Diana 27 Berlin" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (if $2 > 25):"
awk '{ if ($2 > 25) { print $1, $2 } }' data.txt
# Clean up
rm data.txtVerificação rápida: sed e awk
Considere o conteúdo a seguir em um arquivo chamado names.txt:
John Doe,30,New York
Jane Smith,25,London
Peter Jones,40,Paris
Qual dos comandos a seguir exibiria apenas os nomes (primeiro campo) das pessoas com mais de 30 anos?
Recapitulação: o poder de sed e awk
Agora você explorou o poder do sed para edição de fluxo e do awk para processamento avançado de texto!
sedé perfeito para substituições, exclusões e transformações simples, linha por linha.awké excelente para analisar texto estruturado, trabalhar com campos e aplicar lógica condicional para extração de dados e geração de relatórios.
Essas ferramentas são indispensáveis para criação de scripts, análise de registros e manipulação de dados no ambiente Linux.
Perguntas Frequentes
A aula “Manipulação Avançada de Texto (sed, awk)” é grátis?
Sim — o texto completo de “Manipulação Avançada de Texto (sed, awk)” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.
O que vou aprender em “Manipulação Avançada de Texto (sed, awk)”?
Explore o 'sed' para edição de fluxos e o 'awk' para processamento avançado de texto, busca por padrões e extração de dados. Você pratica DevOps Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar DevOps Bootcamp?
Nenhuma experiência prévia é necessária. DevOps Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Manipulação Avançada de Texto (sed, awk)”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de DevOps Bootcamp?
Sim. Cada aula de DevOps Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Manipulação Avançada de Texto (sed, awk)
- Arquivamento e Compressão (tar, gzip, unzip)
- Uso do Disco e Informações do Sistema (df, du, uname)
- Ordenação e Deduplicação de Dados (sort, uniq, cut)