Conheça nesse artigo o comando sed do Linux, um grande editor de textos com um enorme potencial de aplicações!
O sed é um dos comando mais utilizados do Linux, sua versatilidade e aplicações são constantes para diversas situações. Nesse artigo você aprenderá um pouco mais sobre o sed quais suas principais utilizações. Vamos lá?
O que é o sed?
O sed ou Stream Editor é um editor de fluxos e filtragem, uma ferramenta poderosa na hora de automatizar funções e de manipulação de texto.
Utilizando o sed é possível fazer edições em cada linha de um arquivo e ver a saída padrão no terminal, além disso, o sed possui opções de redirecionamento permitindo salvar edições e muitas outras opções.
Apesar de complexo no início, dominar essa ferramenta é um passo muito importante para quem deseja se tornar um administrador Linux, então confira a seguir as aplicações do sed.
Como usar o sed
Existem diversas parametrizações e regras para se utilizar o sed e por ser um comando complexo. A princípio sua sintaxe utiliza o seguinte formato:
sed [OPÇÕES]... [ARQUIVO]...
Para esclarecer melhor as funções do sed, amos abordar as principais características dele, na prática. Confira as principais formas de utilização deste comando:
Substituir um conteúdo de um texto
Com o sed é possível realizar substituições de determinado texto, veja o exemplo a seguir:
No exemplo acima, o arquivo exemplo.txt
possui como conteúdo o texto “Eu adoro o Snappy da HostGator”. Ao rodar o comando cat nesse arquivo, o conteúdo aparece na tela do terminal normalmente e o sed permite criar edições nessa saída de texto utilizando o redirecionador pipe ( | ). Foi utilizado a seguinte expressão:
sed 's/adoro/amo/'
Existem diversos conceitos por trás desse filtro do sed, vamos conferir mais de perto:
''
= a utilização das aspas simples nesse caso, surge para que o sed interprete o filtro como literal, sem substituir nem um termo por uma variável. Se fosse necessário que ele interpretasse variáveis, nesse caso o correto seria utilizar aspas duplas.s
= a subflag s, indicar ao sed que o comando a seguir trata-se de uma substituição, ou seja, vai substituir um certo padrão de texto, por outro./{termo}/{termo}/
= o sed utiliza a / como separador dos conteúdos a serem filtrados, podendo se utilizar também outros caracteres, como pipe (|{termo}|{termo}|
) ou ponto (.{termo}.{termo}.
). Esses caracteres tem a função de delimitar o sed e identificar os termos a serem substituídos. No exemplo utilizado, a substituição no texto foi a palavraadoro
poramo
.
Além disso, o sed também compreende expressões regulares, permitindo criar um filtro ainda mais complexo para substituições:
Agora no arquivo exemplo.txt, tem um vírgula no fim do arquivo que pode ser indesejada, com o sed é possível removê-la utilizando uma expressão regular:
sed 's/,$//'
= nesse caso, o termo/,$//
representa qualquer vírgula no texto que esteja no final da linha, função realizada pela expressão regular dólar e a substituição é por nada, então, é entendido como a remoção daquele primeiro termo somente.,$
Note que se não fosse utilizado a expressão regular, somente a vírgula no meio do texto também seria removida:
O sed aplica o filtro configurado apenas no primeiro termo de cada linha. Caso houvessem mais casos na mesma linha serem substituídos, seria necessário a utilização da subflag g
(global) logo antes do fechamento das aspas simples:
Substituir o conteúdo de um arquivo pela saída do sed
O sed além de ser utilizado com o pipe, pode ser utilizado direto com um arquivo, porém, ao aplicar o comando sed no arquivo, o arquivo não chega a ser editado:
Nesse caso, o arquivo exemplo.txt
teve o termo Linux
substituído por Ubuntu
, mas ao fazer o cat no arquivo, a estrutura continua a mesma.
Para que o sed substitua o conteúdo do arquivo, é necessário a utilização da flag -i
:
Considerações Finais
Nesse artigo você aprendeu sobre o comando sed do Linux e suas principais aplicações.
Se você sentiu alguma dificuldade ou então tem alguma sugestão de algo que não foi mencionado, basta deixar aí nos comentários que no futuro podemos estar trazendo atualizações para este artigo. Também indico esses outros materiais relacionados com este assunto:
Até a próxima! :^)