0Pricing
DevOps Bootcamp · Aula

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.txt

Global 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.txt

Excluindo 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.txt

awk: 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.txt

Filtrando 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.txt

Inicializando 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.txt

Ló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.txt

Verificaçã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

  1. Manipulação Avançada de Texto (sed, awk)
  2. Arquivamento e Compressão (tar, gzip, unzip)
  3. Uso do Disco e Informações do Sistema (df, du, uname)
  4. Ordenação e Deduplicação de Dados (sort, uniq, cut)
← Voltar para DevOps Bootcamp