Sed - Introdução

Introdução ao Sed, por meio de exemplos, cobrindo os tópicos: enviando dados pro sed, selecionando as linhas para edição, substituição, scripts em sed, expressões regulares, referências por &, back reference, hold space/ espaço reserva, dicas de comandos, jogos, exemplos e material para prosseguir nos estudos sobre Sed.

[ Hits: 84.846 ]

Por: jarlisson moreira em 16/07/2012


Scripts em sed



Caso use com frequência algum comando de sed, você pode salvá-lo na forma de script.

Por exemplo, salve o arquivo: frase.sed

Com o seguinte conteúdo:

s/duende/gnomo/
s/javali/porco/


Para executar, siga este padrão:

sed -f comandos_em.sed arquivo_em_que_se_vai_trabalhar.txt

No nosso caso:

sed -f frase.sed frase.txt

Note que o sed interpreta cada linha como um comando, não sendo necessário estarem entre ' ' (aspas).

Lembre-se que linha não é a linha visível. Você pode escrever 1000 linhas em um editor e estar na primeira linha ainda, embora, visualmente você veja várias.

Para isso ficar bem claro, no Vi/Vim, digite :set nu, no modo comando.

Caso queira tornar seu script executável, adicione isso na primeira linha:

#! /bin/sed -f


Depois, dê permissão para executar:

chmod +x frase.sed

Para executar:

./frase.sed frase.txt

Comentando seus scripts

Uma boa prática em programação, é o uso de comentários.

Servem para explicar melhor uma passagem e não vão afetar a interpretação/compilação do código. É algo de desenvolvedor para desenvolvedor.

Em sed, assim como na maioria das linguagens de script, se utiliza '#' para fazer comentários.

* Uma ressalva: Caso os dois primeiros caracteres de seu script sejam: #n

O sed interpretará como a flag "-n" (não imprimir), anteriormente explicada. Ou seja, tome cuidado caso este seja seu objetivo.

Exemplo:

# Comentário ok
#Comentário ok
#Nesse caso, também
#nesse caso vai dar erro


Inserindo e anexando

Uma maneira de editar seus arquivos é através do comando i (insert, inserindo) e a (append, anexando).

Vamos adicionar os números "-1" e "0" ao início de nosso "teste.txt", e os números "7" e "8" ao final.

Para isso, crie o script: teste.sed

#! /bin/sed -f

1 i\
-1\
0

$ a\
7\
8


O número 1 representa a linha em que vamos inserir.

O $, em expressão regular, significa a última linha do arquivo.

Logo, inserimos "-1" e "0" a partir da primeira linha e "7" e "8", a partir da última.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução - o que é e para que serve
   2. Enviando dados para o sed
   3. Substituindo
   4. Scripts em sed
   5. Expressões regulares
   6. Referenciando com & - Back reference
   7. Hold space
   8. Por onde prosseguir e considerações finais
Outros artigos deste autor

LibreOffice Math

Pipelines (Canalizadores)

Processos

Shell - Funções

AWK - Introdução

Leitura recomendada

Monitoramento automático de logs e alertas por e-mail - Fácil e explicado

Reconhecimento de Voz no Linux

Enviar e-mail pelo terminal com mutt

Shell Script 1 - Básico

Cansou do Konsole e GNOME-Terminal? Existem outros terminais, escolha o seu!

  
Comentários
[1] Comentário enviado por eldermarco em 16/07/2012 - 10:53h

Muito bom! Super bem escrito e bastante didático, exatamente como o artigo sobre o AWK que você escreveu. Nota 10!

[2] Comentário enviado por removido em 16/07/2012 - 12:42h

i like too!

[3] Comentário enviado por eduardo em 16/07/2012 - 14:13h

Ótimo artigo! Parabéns! Acabei de perceber que uso menos de 5% do poder do sed. :)

[4] Comentário enviado por sir.guil em 16/07/2012 - 15:05h

Parabéns, era uma coisa que faltava aqui no vol,

sempre que precisei estudar o sed, dependi do http://aurelio.net/sed/

agora estamos + completos

[5] Comentário enviado por julio_hoffimann em 16/07/2012 - 17:56h

Novamente parabéns Jarlisson!

Artigos bastante claros que ajudarão muitos no VOL.

Abraço!

[6] Comentário enviado por marcelo.castro.l em 17/07/2012 - 08:10h

Cara, muito bom esse artigo.
Salvou minha pátria aqui na empresa.
Precisava manipular um arquivo gerado pelo:

#iptables -L

Porém não precisava dele formatado com os espaços, graças ao "sed" tudo fluiu perfeitamente.

Obrigado!

[7] Comentário enviado por H4cktz em 19/02/2019 - 12:09h

Muito bom! Super bem escrito e bastante didático, Nota 1000! Finalmente estou aprendendo SED!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts