sed | Linux
- sed | Linux
1. O que é o sed
-
O sed é um utilitário de linha de comando presente em sistemas Unix/Linux que atua como um editor de fluxo (stream editor) — ou seja, lê texto de um arquivo ou de uma entrada, linha a linha, aplica transformações e emite o resultado. ([GNU][1])
-
Foi desenvolvido por Lee E. McMahon nos Bell Labs entre 1973-74 como sucessor natural de utilitários como
edeqed. ([Wikipedia][2]) -
Principais diferenciais:
- Trabalha em uma única pasada sobre a entrada. ([GNU][1])
- Ideal para processamento de texto não interativo, automação de transformações de textos (substituir, deletar, inserir linhas etc). ([DigitalOcean][3])
2. Sintaxe Básica
-
Uma forma simples de invocar:
sed [OPÇÕES] 'SCRIPT' [ARQUIVO...]Por exemplo:
sed 's/hello/world/' input.txt > output.txt([GNU][1])
-
Onde:
SCRIPTé o comando (ou conjunto de comandos) sed que define as ações a aplicar.ARQUIVOé o(s) arquivo(s) de entrada. Se não for especificado, o sed lê da entrada padrão (stdin). ([Ask Ubuntu][4])
-
Exemplos de opções comuns:
-i— edita o arquivo in-place (sobrescreve) (no GNU sed). ([W3Schools][5])-n— suprime a impressão automática de cada linha (útil se você quiser controlar o que é impresso). ([GeeksforGeeks][6])-e— permite passar múltiplos comandos de edição no script. ([GeeksforGeeks][6])-f— lê comandos sed de um arquivo de script em vez da linha de comando. ([GeeksforGeeks][6])
3. Comandos e operações comuns
Aqui estão alguns dos usos mais frequentes:
3.1 Substituição (comando s)
-
A substituição é provavelmente o uso mais comum:
sed 's/padrão/substituto/' arquivoExemplo: substituir “unix” por “linux” no arquivo. ([GeeksforGeeks][6])
-
As variações:
g— flag “global” para substituir todas as ocorrências na linha (por padrão, só a primeira). ([GeeksforGeeks][6])/n— onde “n” é um número para substituir apenas a n-ésima ocorrência da linha. ([GeeksforGeeks][6])- Delimitador customizado — embora “/” seja padrão, você pode usar outro caractere se o padrão ou substituto contiver “/”. ([grymoire.com][7])
- Uso de grupos de captura para referenciar parte do padrão no substituto (
\1,\2, etc). ([grymoire.com][7])
3.2 Deleção de linhas (comando d)
-
Você pode deletar linhas específicas ou que correspondam a um padrão. Exemplo:
sed '5d' arquivo # deleta a 5ª linha
sed '$d' arquivo # deleta a última linha
sed '3,6d' arquivo # deleta da linha 3 à 6
sed '/pattern/d' arquivo # deleta todas as linhas que contenham o “pattern”([Hostinger][8])
3.3 Inserção / adição de linhas (i, a)
-
Inserir texto antes ou depois de uma linha:
sed '3i\Texto a inserir antes da linha 3' arquivo
sed '3a\Texto a inserir após a linha 3' arquivo([GeeksforGeeks][6])
3.4 Operações com intervalos de linhas ou padrões
-
Você pode especificar endereços (addresses) para comando sed: número de linha, expressão regular, ou intervalo. Exemplo:
sed '1,3 s/unix/linux/' arquivo # aplica substituição apenas nas linhas 1-3([GeeksforGeeks][6])
3.5 Uso de espaços de “holding” e operações mais avançadas
- Sed possui conceito de pattern space (espaço onde a linha está sendo trabalhada) e hold space (espaço de retenção temporária) para operações mais sofisticadas. ([GeeksforGeeks][6])
- Para transformações mais complexas, scripts sed podem ficar bem elaborados. ([Wikipedia][2])
4. Exemplos práticos
Alguns exemplos para ilustrar:
-
Substituir “unix” por “linux” globalmente num arquivo:
sed 's/unix/linux/g' geekfile.txt([GeeksforGeeks][6])
-
Substituir apenas na linha 3:
sed '3 s/unix/linux/' geekfile.txt([GeeksforGeeks][6])
-
Apagar as linhas de 2 até o fim:
sed '2,$d' arquivo.txt([GeeksforGeeks][6])
-
Usar em pipeline (entrada padrão):
comando_que_gera_texto | sed 's/x/y/g'([Wikipedia][2])
5. Vantagens, limitações e cuidados
-
Vantagens: funciona bem em scripts, automatização, processamentos em lote. Pode operar sem abrir um editor interativo.
-
Limitações:
- Por padrão trabalha linha a linha — operações muito complexas (como manipulação multilinha extensa) são mais difíceis ou exigem truques. ([DigitalOcean][3])
- Algumas versões (por exemplo BSD sed vs GNU sed) têm pequenas diferenças de opções ou comportamento. ([DigitalOcean][3])
-
Cuidados:
- Se usar
-i(edição in-place), sempre faça backup ou verifique antes, pois sobrescreve arquivo original. ([GeeksforGeeks][6]) - Com expressões regulares e substituições automáticas, verificar primeiro em amostra reduzida para evitar mudanças indesejadas. ([Hostinger][8])
- Se usar
6. Referências recomendadas
- Manual oficial GNU sed: “sed, a stream editor”. ([GNU][1])
- Tutorial completo (Tutorialspoint): “Sed Tutorial”. ([Tutorials Point][9])
- Artigo “Mastering sed command in Linux: A Comprehensive Guide”. ([DigitalOcean][10])
- Exemplos e explicações no GeeksforGeeks. ([GeeksforGeeks][6])