O sed, no Linux, é uma ferramenta para manipulação de texto que permite a edição de arquivos diretamente da linha de comando.
Uma abreviação de “Stream Editor”, o comando sed é amplamente usado para substituir texto, deletar linhas, acrescentar ou escrever novas informações. Tudo isso sem a necessidade de abrir o arquivo em um editor tradicional.
Conheça alguns comandos básicos, além de exemplos práticos, como instalá-lo e o seu fluxo de trabalho.
Veja quais são os comandos sed básicos
Os comandos básicos do sed permitem operações comuns, como deletar, escrever, acrescentar e ler conteúdo em arquivos.
Deletar
O comando sed permite deletar linhas específicas de um arquivo de texto. Essa função é eficaz para limpar arquivos, textos duplicados, entre outros.
Para executar esse comando, você deve utilizar d junto com o nome do arquivo entre aspas. Assim, você decide qual linha do arquivo quer deletar.
Por exemplo, para deletar a terceira linha de um arquivo, você pode usar o comando: sed ‘3d’ text.txt.
Nesse exemplo, o “3d” indica que a terceira linha (3) será deletada (d). É possível deletar múltiplas linhas ao especificar um intervalo, como “3,5d”, que deletará da linha 3 até a 5.
Caso você queira apagar apenas uma palavra, é possível utilizar um comando para simplificar essa ação.
Por exemplo, se você quer apagar a palavra “sleep”, basta utilizar o comando:
sed‘/sleep/d’ script.sh.
Desse modo, você apagará apenas a palavra desejada, sem a necessidade de apagar todo o conteúdo.
Escrita
O comando sed também pode ser usado para escrever novas linhas em um arquivo. Para isso, utilize w, seguido pelo número da linha e do arquivo, entre aspas. Veja o comando que lê a segunda linha e a escreve no arquivo selecionado:
sed '2~2 w text2.txt' text.txt.
Nesse caso, a nova linha será adicionada após a segunda linha do arquivo. Esse comando é útil para acrescentar comentários ou informações sem alterar o conteúdo original.
Acrescentar
Vamos criar um arquivo chamado “config.txt”, que serve para configurar um site em um servidor. Nesse arquivo, já temos algumas informações, como:
-
- A porta que o servidor vai usar (no caso, Port 80, que é a porta padrão para sites);
- O nome do site (neste exemplo, “example.com”).
Agora, precisamos acrescentar uma informação: o diretório raiz, que é basicamente o local no computador no qual estão guardados os arquivos do site.
Para fazer isso, vamos adicionar uma nova linha ao arquivo, logo após a linha com o nome do site.
O comando que usamos para isso é:
sed ‘/ServerName/a\DocumentRoot /var/www/html’ config.txt.
Esse comando vai procurar o local em que está escrito “ServerName” e colocar a linha DocumentRoot /var/www/html logo abaixo.
No final, o arquivo vai ficar assim:
-
- Port 80;
- ServerName example.com;
- DocumentRoot /var/www/html.
Essa última linha indica que os arquivos do site estão na pasta “/var/www/html”. O comando sed só foi usado para adicionar essa linha no lugar certo, sem precisar editar o arquivo manualmente.
Leitura
Vamos usar um comando que utiliza o conteúdo de um arquivo de texto (chamado “text.txt”) e o coloca dentro de outro arquivo (chamado “text2.txt”). Vamos inserir o conteúdo logo após a terceira linha do “text2.txt”.
O comando correspondente é o:
sed '3 r text.txt' text2.txt.
Aqui, o número “3” significa que o conteúdo de “text.txt” será colocado depois da terceira linha do “text2.txt”.
Após rodarmos esse comando, se olharmos o arquivo “text2.txt” (com outro comando, como o cat), veremos que ele, agora, tem o conteúdo de “text.txt” inserido logo após a terceira linha.
Ou seja, o comando faz o seguinte:
-
- Pega o conteúdo do “text.txt”;
- Insere esse conteúdo logo após a terceira linha do “text2.txt”.
O objetivo é juntar o conteúdo de dois arquivos de uma forma bem específica.
Confira alguns exemplos de uso do sed
O sed pode ser usado em diversos cenários. Abaixo, estão alguns exemplos práticos que ilustram o seu uso no dia a dia.
-
- Substituição de texto: para substituir todas as ocorrências de “Linux” por “GNU/Linux” em um arquivo:
sed 's/Linux/GNU\/Linux/g' arquivo.txt
— o comando “s” é usado para substituição e o “g”, no final, indica que todas as ocorrências devem ser substituídas;
-
- Excluir linhas vazias: para deletar todas as linhas vazias de um arquivo:
sed '/^$/d' arquivo.txt
— aqui, o “^$” identifica linhas vazias e o “d” as deleta;
-
- Adicionar prefixo a cada linha: para adicionar um prefixo “#” em cada linha de um arquivo (útil para comentar um script), use:
sed 's/^/# /' arquivo.txt;
-
- Substituir texto em várias linhas: para substituir a palavra “erro” por “ERRO” nas linhas 10 a 20, por exemplo:
sed '10,20s/erro/ERRO/g' arquivo.txt
— esse uso específico é excelente para destacar seções de logs ou relatórios.
Instalação do sed
O sed, geralmente, já vem instalado em distribuições Linux. No entanto, caso não esteja disponível, você pode instalá-lo facilmente.
-
- Acesse o seu VPS Linux;
- No Ubuntu ou Debian, use:
sudo apt-get install sed;
-
- Em distribuições baseadas no Red Hat, como o Fedora, o comando é:
sudo yum install sed;
-
- Após a instalação, você pode confirmar se o sed funciona corretamente com o comando:
sed --version.
Sed Workflow
Para utilizar o sed de forma eficiente, é importante entender o seu fluxo de trabalho. O sed lê um arquivo linha por linha, aplica os comandos especificados e imprime o resultado. Isso permite editar arquivos grandes sem carregar o arquivo inteiro na memória, o que é um diferencial para scripts de automação.
De maneira resumida, o workflow do sed é assim:
-
- Leitura: o sed lê a entrada do arquivo ou stream;
- Aplicação dos comandos: ele aplica os comandos especificados (substituição, deleção, entre outros);
- Impressão: imprime o resultado modificado, que pode ser redirecionado para um arquivo de saída.
Um exemplo de workflow básico seria:
sed 's/velho/novo/g' arquivo.txt > arquivo_modificado.txt.
Esse comando substitui “velho” por “novo” em “arquivo.txt” e salva o resultado em “arquivo_modificado.txt”.
Agora que você já sabe como usar o sed, aproveite também para conhecer outros comandos Linux importantes!