Manipulação Estruturada de Arquivos: Substituição Rápida de Textos no Terminal com sed

Manipulação Estruturada de Arquivos: Substituição Rápida de Textos no Terminal com sed

O utilitário sed (Stream Editor) é uma das ferramentas de linha de comando mais poderosas do Linux para aplicar transformações automatizadas em fluxos de texto e arquivos. Ele resolve a necessidade de alterar palavras, caminhos ou padrões repetitivos em massa sem a necessidade de abrir interativamente editores de texto como VIM ou Nano. A seguir, veja como realizar substituições simples, globais e aplicar alterações diretamente nos arquivos salvos.

Bash

#!/bin/bash
# Exemplo prático de substituição de texto com sed em arquivo de configuração

# Criando um arquivo simulado de configuração
cat << 'EOF' > config.env
DB_HOST=127.0.0.1
DB_PORT=5432
APP_MODE=development
LOG_LEVEL=debug
EOF

# 1. Substituição apenas na exibição (stdout), mantendo o arquivo original intocado
sed 's/development/production/' config.env

# 2. Substituição em massa diretamente no arquivo (-i / --in-place)
sed -i 's/127.0.0.1/10.0.0.5/g' config.env

# 3. Alterando delimitadores para manipular caminhos ou URLs sem erro de sintaxe
sed -i 's|LOG_LEVEL=debug|LOG_LEVEL=info|g' config.env

echo "=== Conteúdo atualizado do config.env ==="
cat config.env

Exemplo de uso e verificação no terminal:

Bash

# Criando um backup (.bak) automático ao alterar o arquivo original diretamente
sed -i.bak 's/production/staging/g' config.env

# Verificando as alterações
cat config.env

Pontos-chave

  • O Flag /g (Global): Por padrão, a instrução s/antigo/novo/ altera apenas a primeira ocorrência da linha; adicione o sufixo /g ao final para substituir todas as ocorrências encontradas.
  • Modificação In-place (-i): A flag -i sobrescreve o arquivo diretamente; usar -i.bak cria uma cópia de segurança antes de aplicar a alteração no arquivo original.
  • Alteração de Delimitadores: É possível trocar a barra (/) por qualquer outro caractere especial (como | ou #) na expressão s|velho|novo|, evitando conflitos e o uso excessivo de escapes ao editar URLs ou caminhos de diretórios.
  • Suporte a Expressões Regulares: O sed aceita padrões de regex; adicione a opção -E para ativar a sintaxe de expressões regulares estendidas para substituições mais complexas.
  • Incompatibilidade macOS vs Linux: No macOS (BSD sed), a flag -i exige obrigatoriamente a declaração da extensão do backup (ex: sed -i '' 's/a/b/g' arquivo), diferente do padrão GNU sed utilizado no Linux.

Thales de Oliveira Gomes

Thales de Oliveira Gomes é gestor de Tecnologia da Informação, especialista em infraestrutura de redes, computação em nuvem e operações de TI hospitalar, com mais de 18 anos de experiência na área. Graduado em Gestão de TI e pós-graduado em Engenharia de Redes e Telecomunicações, Cloud Computing, Redes de Computadores e Gestão Hospitalar, construiu uma trajetória sólida liderando projetos de alta complexidade, como a implementação e migração para nuvem de sistemas ERP de grande porte. Sua atuação no setor o levou a ser indicado ao prêmio IT Leaders Brasil na categoria Rising Leaders. Além da carreira corporativa e da paixão por tecnologia, Thales é autor independente com mais de 70 obras publicadas sobre redes, segurança da informação, Linux e física, além de criador de conteúdo no blog Vetor Tech e na plataforma CiberDicas. No universo das artes e do entretenimento, atua como produtor de música eletrônica sob o projeto Yknex, cria ilustrações digitais e compartilha walkthroughs de games no YouTube.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *