Guia Completo do Comando sed no Linux

Visão Geral

Apresentamos o poderoso editor de fluxo sed, que permite substituir e editar o conteúdo de arquivos de texto de forma rápida e precisa no ambiente Linux. Aprenda facilmente por meio de exemplos práticos, desde a substituição básica de strings até a exclusão de linhas específicas e a opção inline (-i), que modifica arquivos diretamente enquanto cria backups.

1. Preparação do Ambiente de Prática e Substituição Básica de Strings com sed (Comando s)

Para criar um diretório dedicado para praticar os comandos sed com segurança e navegar até ele, execute o comando mkdir -p ~/sed_practice && cd ~/sed_practice.

mkdir -p ~/sed_practice && cd ~/sed_practice

Para estruturar o texto de exemplo usado na prática de substituição de strings, execute o comando echo -e 'apple is delicious\nbanana is yellow\napple is red' > fruits.txt para gravar o conteúdo no arquivo.

echo -e ‘apple is delicious\nbanana is yellow\napple is red’ > fruits.txt

O comando sed é um editor de fluxo que processa e edita fluxos de texto.
Utilizando o operador de substituição s, a primeira ocorrência da string apple encontrada em cada linha é substituída por orange e exibida na tela.
O conteúdo do arquivo original fruits.txt não é alterado; apenas o resultado é exibido na saída padrão.
⚙️ [Principais Opções]

-i : Modifica e salva diretamente o arquivo original em vez de exibir a saída na tela.
-e : Concatena e executa vários comandos de script de edição de uma só vez.
-n : Suprime a saída automática do pattern space e exibe apenas as linhas explicitamente especificadas.
-E ou -r : Habilita e utiliza a sintaxe de expressões regulares estendidas (ERE).

sed ’s/apple/orange/’ fruits.txt

Adicionar a flag g ao final da expressão de substituição faz com que todas as ocorrências correspondentes em uma linha sejam substituídas globalmente.
Isso é utilizado quando existem múltiplos termos idênticos em cada linha e você deseja alterar todos sem exceção.

sed ’s/apple/orange/g’ fruits.txt

2. Exibição Seletiva e Exclusão de Linhas Específicas (Comando d e Opção -n)

Para preparar os dados de log necessários para a prática de seleção e exclusão de linhas, execute o comando echo -e 'Line 1: Server OK\nLine 2: Server Warning\nLine 3: Server Error\nLine 4: Server OK' > server.log para criar o arquivo de exemplo.

echo -e ‘Line 1: Server OK\nLine 2: Server Warning\nLine 3: Server Error\nLine 4: Server OK’ > server.log

Combinando a opção -n com o comando p, apenas o intervalo especificado da linha 2 à linha 3 é exibido na tela.
Isso é útil para suprimir a saída automática padrão e inspecionar seletivamente apenas as linhas desejadas.

sed -n ‘2,3p’ server.log

Utilizando o comando d com correspondência de padrões, as linhas que contêm a string Warning são excluídas e apenas o restante do conteúdo é impresso na tela.
Isso é usado para filtrar e verificar logs desnecessários ou linhas sob condições específicas.

sed ‘/Warning/d’ server.log

Especificando um número de linha e executando o comando d, o resultado da exclusão da 2ª linha é exibido na tela.
Isso é útil quando você deseja remover uma linha de determinado número e verificar o conteúdo do arquivo.

sed ‘2d’ server.log

3. Modificação Direta de Arquivos Originais e Backup Automático (Opção -i)

Para a prática de modificação de arquivos de configuração, crie o arquivo config.env contendo dados de variáveis de ambiente de exemplo.

echo -e ‘PORT=8080\nDEBUG=true\nTIMEOUT=30’ > config.env

Usando a opção -i.bak, uma cópia de backup do arquivo original chamada config.env.bak é criada ao mesmo tempo em que a configuração DEBUG=true é imediatamente substituída por DEBUG=false e salva no arquivo original.
Isso é utilizado ao modificar diretamente o arquivo original, mantendo o estado anterior preservado com segurança.

sed -i.bak ’s/DEBUG=true/DEBUG=false/’ config.env

Verifique o conteúdo do arquivo config.env modificado com o comando cat.
É possível confirmar que o valor de DEBUG foi alterado com sucesso para false e aplicado ao arquivo.

cat config.env

Imprima e verifique o conteúdo do arquivo de backup gerado automaticamente, config.env.bak.
Pode-se observar que o conteúdo original antes da alteração, DEBUG=true, foi preservado intacto, comprovando que o backup foi feito com segurança.

cat config.env.bak

4. Substituição Avançada de Texto com Expressões Regulares e Delimitadores Personalizados

Para gerar dados de exemplo de caminhos de arquivos a serem usados na prática de substituição de paths, escreva o conteúdo no arquivo paths.txt com o comando echo.

echo -e ‘Old path: /usr/local/bin\nNew path: /usr/local/bin’ > paths.txt

Usando o caractere pipe (|) como delimitador de substituição em vez da barra padrão (/), substitua /usr/local/bin por /usr/bin no caminho de forma segura e exiba o resultado.
Ao lidar com caminhos de arquivos ou URLs que contêm barras, você pode escrever expressões limpas sem a necessidade de caracteres de escape (\).

sed ’s|/usr/local/bin|/usr/bin|g’ paths.txt

Para praticar a remoção de espaços em branco usando expressões regulares, crie o arquivo de exemplo spaces.txt contendo espaços à esquerda e à direita.

echo -e ’   leading spaces\nno spaces\n   trailing removed   ’ > spaces.txt

Ao corresponder o caractere ^, que indica o início da linha, com a expressão regular [ \t]*, que especifica espaços e caracteres de tabulação, todos os espaços no início de cada linha são removidos e exibidos.
Isso pode ser aplicado com eficiência para limpar recuos e espaços em branco em massa em documentos ou dados de log.

sed ’s/^[ \t]*//’ spaces.txt

Até aqui, revisamos os principais usos do comando sed no Linux, desde a substituição básica de texto até métodos de modificação em lote de grandes quantidades de arquivos.
Sendo uma ferramenta poderosa que reduz drasticamente tarefas repetitivas de edição de arquivos, certifique-se de aproveitá-la sempre que necessário.