Combinação de Regex com sed/awk
Integre expressões regulares aos comandos 'sed' e 'awk' para filtragem, substituição e extração avançadas de texto e dados.
Combinação de Regex com sed/awk é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 3 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.
Expressões regulares com sed e awk
Bem-vindo à lição final sobre expressões regulares! Aprendemos sobre o poder das expressões regulares para correspondência de padrões.
Agora, vamos combinar esse poder com duas ferramentas essenciais do Linux: sed (editor de fluxo) e awk (linguagem de varredura e processamento de padrões). Essa integração permite realizar filtragem e substituição de texto e extração de dados de forma altamente avançada.
sed: filtrando com expressões regulares
O sed pode usar expressões regulares para filtrar linhas. O endereço /pattern/ permite que o sed aplique comandos somente às linhas que correspondem à expressão regular fornecida.
A opção -n suprime a saída padrão, e p imprime explicitamente as linhas correspondentes.
echo -e "apple
banana
orange" | sed -n '/an/p'sed: substituindo com expressões regulares
O comando s/regex/replacement/ no sed é onde as expressões regulares realmente se destacam para a transformação de texto. Você pode substituir por um novo texto os padrões encontrados pela sua expressão regular.
O sinalizador g substitui todas as ocorrências em uma linha, e i torna a correspondência insensível a maiúsculas e minúsculas.
echo "Hello world, hello universe" | sed 's/hello/hi/gi'sed: grupos de captura e referências retroativas
As expressões regulares permitem definir grupos de captura usando parênteses (). Depois, você pode fazer referência ao texto correspondente a esses grupos na string de substituição usando referências retroativas, como \1, \2 etc.
Use -E com sed para a sintaxe de expressões regulares estendidas (por exemplo, para usar () sem escape).
echo "Doe, John" | sed -E 's/([A-Za-z]+), ([A-Za-z]+)/\2 \1/'awk: filtrando registros com expressões regulares
O awk usa padrões de expressões regulares para selecionar registros (linhas) antes de executar ações. Se um padrão for fornecido antes de um bloco de ação {...}, a ação será executada somente para as linhas que correspondem ao padrão.
Isso é semelhante ao grep, mas permite um processamento mais complexo.
echo -e "Line 1: apple
Line 2: banana
Line 3: orange" | awk '/banana/'awk: expressões regulares em campos específicos
Você pode aplicar padrões de expressões regulares a campos específicos no awk usando os operadores ~ (corresponde) e !~ (não corresponde). Isso é muito poderoso para dados estruturados.
Por exemplo, $1 ~ /pattern/ verifica se o primeiro campo corresponde à expressão regular.
echo "Name: John, Age: 30
Name: Jane, Age: 25" | awk '$1 ~ /Name/ {print $2}'awk: extraindo correspondências (match, substr)
O awk fornece funções como match(string, regex) para encontrar a posição e o comprimento de uma correspondência, e substr(string, start, length) para extraí-la.
Depois de match(), RSTART contém a posição inicial e RLENGTH contém o comprimento da correspondência.
echo "ItemCode: ABC123 Price: 45.67" | awk '{match($0, /[0-9]+\.[0-9]+/); print substr($0, RSTART, RLENGTH)}'awk: substituição no próprio local (sub, gsub)
O awk também possui funções integradas para substituição: sub(regex, replacement, target) para a primeira correspondência e gsub(regex, replacement, target) para todas as correspondências.
Se target for omitido, $0 (o registro inteiro) será usado. Você pode especificar um campo, como $1.
echo "apple,banana,orange" | awk '{gsub(/a/, "X", $0); print}'Escolhendo entre sed e awk
Embora tanto o sed quanto o awk possam usar expressões regulares para substituição e filtragem, cada um se destaca em áreas diferentes:
sedgeralmente é melhor para transformações e substituições simples, linha por linha. Ele é um editor de fluxo.awké mais poderoso para processar dados estruturados (campos), realizar cálculos e lidar com lógica mais complexa ou padrões que abrangem várias linhas. Ele é uma linguagem de programação por si só.
Com frequência, eles podem ser encadeados com pipes | para tarefas muito complexas.
Desafio: extraia e transforme
Considere a seguinte linha de texto:
Order#12345: ProductX - Price $19.99Qual comando extrairia corretamente o preço (por exemplo, '19.99') e depois mudaria o símbolo da moeda para 'EUR'?
Recapitulação: expressões regulares com sed e awk
Você dominou a combinação de expressões regulares com sed e awk!
sedse destaca na filtragem e substituição de texto linha por linha, usando expressões regulares para uma poderosa correspondência e substituição de padrões.awkoferece uma abordagem mais programática, permitindo filtrar registros com expressões regulares, fazer correspondências em campos específicos e extrair ou modificar dados usando funções comomatch(),substr(),sub()egsub().
Essa habilidade é essencial para o processamento avançado de texto e a criação de scripts no Linux.
Perguntas Frequentes
A aula “Combinação de Regex com sed/awk” é grátis?
Sim — o texto completo de “Combinação de Regex com 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 “Combinação de Regex com sed/awk”?
Integre expressões regulares aos comandos 'sed' e 'awk' para filtragem, substituição e extração avançadas de texto e 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 3 de 4.
Quanto tempo leva a aula “Combinação de Regex com 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
- Introdução às Expressões Regulares (Regex)
- Grep Avançado com Regex
- Combinação de Regex com sed/awk
- Grupos de Captura, Retroreferências e Substituição