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: 69.927 ]

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

AWK - Introdução

Pipelines (Canalizadores)

Shell - Funções

Processos

LibreOffice Math

Leitura recomendada

Shell - Funções

AWK - Manipulação de arquivos de texto

Mostrando dicas ao iniciar o terminal

Introduzindo um pouco mais a fundo o shell script (revisado)

Programação com Shell Script

  
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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts