O comando sed no Linux é um poderoso editor de fluxo que permite realizar transformações básicas de texto em um fluxo de entrada (um arquivo ou entrada de um pipeline). É amplamente utilizado para pesquisar, localizar e substituir, inserir e excluir texto em arquivos. Ao contrário dos editores de texto simples, o sed processa dados em um pipeline e é especialmente útil para automatizar manipulações de texto em scripts shell.
Os principais recursos do sed incluem a capacidade de:
- Substitua o texto em um arquivo usando expressões regulares.
- Exclua linhas com base em padrões específicos.
- Insira ou anexe texto a linhas específicas.
- Transforme ou converta texto com base em padrões complexos.
Este guia fornecerá exemplos para demonstrar o uso prático do comando sed no Linux, mostrando como ele pode ser utilizado para diversas tarefas de processamento de texto.
Sintaxe chave e opções do comando Sed
Antes de nos aprofundarmos nos exemplos, é vital compreender a sintaxe primária do comando sed:
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
Aqui estão algumas opções comumente usadas:
- -e: Permite o uso de vários comandos.
- -n: Suprime o comportamento padrão ao imprimir cada linha.
- -i: Edita os arquivos no local (tenha cuidado, pois modifica o arquivo original).
Exemplos básicos de comando Sed no Linux
Substituição de Texto Básico
Um dos usos mais comuns do sed é substituir texto.
echo "Welcome to Linux" | sed 's/Linux/Unix/'
Saída:
Welcome to Unix
Substituição Global
Por padrão, sed substitui a primeira ocorrência em uma linha. Para substituir todas as ocorrências, use o sinalizador 'g'.
echo "Apples are better than apples" | sed 's/apples/oranges/g'
Saída:
Apples are better than oranges
Exclusão de linha
O sed também pode remover linhas com base em um padrão específico.
echo -e "apple\norange\nbanana" | sed '/orange/d'
Saída:
apple
banana
Inserindo e Anexando Texto
Você pode introduzir novas linhas de texto antes ou depois de uma correspondência de padrão.
echo "Hello" | sed 'i\Good Morning'
Saída:
Good Morning
Hello
Alterando caixa de texto
Com sed, você pode manipular a caixa do texto usando a função y. Vamos ver um exemplo de conversão de minúsculas para maiúsculas:
echo "hello world" | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'
Saída:
HELLO WORLD
Uso avançado do comando Sed no Linux
Substituição de texto multipadrão
Para vários padrões, você pode empregar -e para encadear vários comandos de substituição.
echo "Welcome to Linux. I love Linux." | sed -e 's/Linux/Unix/' -e 's/love/adore/'
Saída:
Welcome to Unix. I adore Linux.
Substituição de texto condicional
Com o sed, é possível substituir texto com base em certas condições usando endereços.
echo -e "apple\nbanana\ncherry" | sed '/banana/s/$/ - favorite fruit/'
Saída:
apple
banana - favorite fruit
cherry
Usando Sed com expressões regulares
Aproveite o poder das expressões regulares para combinar padrões complexos.
echo "Price is $100" | sed 's/$[0-9]*/& (USD)/'
Saída:
Price is $100 (USD)
Referências anteriores para substituições complexas
Referências anteriores podem ser utilizadas para fazer referência a partes do padrão correspondente.
echo "The white cat and black dog" | sed 's/\(white\|black\) \(cat\|dog\)/\2 \1/'
Saída:
The cat white and dog black
Editando no local com a opção -i
Um dos recursos poderosos do sed é a capacidade de editar arquivos diretamente. Isso pode ser conseguido usando a opção -i, mas sempre faça backup do arquivo original antes de fazer qualquer modificação direta.
echo "Original text" > temp.txt
sed -i 's/Original/Modified/' temp.txt
cat temp.txt
Saída:
Modified text
Conclusão
Compreender e dominar o comando sed pode melhorar significativamente sua capacidade de manipular e processar arquivos de texto no Linux. Ao praticar os exemplos fornecidos, você aprenderá como lidar com eficiência com tarefas comuns de processamento de texto, automatizar trabalhos de edição repetitivos e incorporar sed em seu fluxo de trabalho de script. Experimentar regularmente diferentes opções e comandos do sed aprofundará seu conhecimento e permitirá que você aproveite todo o seu potencial. Aproveite a versatilidade e o poder que o sed traz para suas tarefas de processamento de texto no Linux.