Olá amigo estudante!
Para quem ficou um pouco confuso como eu sobre o comando sed segue um para saber mais :) :
O comando sed
é um utilitário de linha de comando no Unix e Linux usado para processar e transformar texto em arquivos ou streams.
Ele é conhecido como "stream editor" porque lê entrada linha por linha, aplica transformações e envia a saída para o terminal ou para outro arquivo.
É frequentemente usado para substituições, exclusões, inserções e outras manipulações de texto.
O uso mais comum do sed
é a substituição de texto com o parâmetro s
, que segue a sintaxe s/padrão/substituto/
.
Por exemplo, para substituir a palavra "foo" por "bar" em um arquivo:
sed 's/foo/bar/' arquivo.txt
Esse comando substitui apenas a primeira ocorrência de "foo" em cada linha. Para substituir todas as ocorrências em uma linha, adiciona-se o modificador g
(de global):
sed 's/foo/bar/g' arquivo.txt
É possível editar arquivos diretamente com a opção -i
(in-place), o que altera o conteúdo do arquivo original:
sed -i 's/foo/bar/g' arquivo.txt
Caso queira criar um backup do arquivo original antes da substituição, pode passar uma extensão como argumento ao -i
:
sed -i.bak 's/foo/bar/g' arquivo.txt
Esse comando cria uma cópia do arquivo com extensão .bak
antes de modificar o original.
O sed
também pode ser usado para deletar linhas com o comando d
. Por exemplo, para remover todas as linhas que contêm a palavra "erro":
sed '/erro/d' arquivo.txt
Para substituir texto apenas em linhas específicas, usa-se o número da linha antes do comando. Por exemplo, para substituir "foo" por "bar" apenas na linha 2:
sed '2s/foo/bar/' arquivo.txt
Também é possível usar intervalos de linhas:
sed '2,4s/foo/bar/g' arquivo.txt
Esse comando aplica a substituição da linha 2 até a linha 4.
O sed
pode inserir ou adicionar texto com os comandos i
(inserir antes da linha) e a
(adicionar após a linha). Por exemplo:
sed '2i\Texto inserido antes da linha 2' arquivo.txt
sed '2a\Texto adicionado após a linha 2' arquivo.txt
Para substituir apenas se uma condição for atendida, pode-se combinar padrões. Por exemplo, substituir "foo" por "bar" somente em linhas que contêm "erro":
sed '/erro/s/foo/bar/g' arquivo.txt
O comando sed
também permite capturar grupos com expressões regulares usando parênteses escapados \(...\)
e referenciá-los com \1
, \2
, etc. Exemplo de inversão de dois campos separados por espaço:
echo "Alice Bob" | sed 's/\(\w\+\) \(\w\+\)/\2 \1/'
A saída será:
Bob Alice
O sed
é uma ferramenta poderosa e compacta que pode automatizar modificações em texto com muita eficiência.
Seu funcionamento baseado em padrões e comandos permite realizar desde tarefas simples até transformações complexas com poucas linhas de código.
Para entender seu funcionamento a melhor forma é praticando e fazendo testes.
Comente ai sua opinião ou sugestão.
Obrigado.