#!/bin/sed -fn

/^Bem-vind[oa]/!{

  /E/s/ta é a /minha pá/g;/i/n;/a/ s/o//;b re; /o Se/d

  sed primeiro, dep;/oi/s o resto ;P

}
$!N

Baixe o SED

Antes de mais nada, você tem Sed? Baixe a versão GNU 3.02.80, a última "usável": tar.gz (342 Kb) | rpm (63 Kb)

Listas de discussão

Você ainda não assina a sed-br? Demorou. Inscreva-se já! para conversar com outros coleguinhas sobre Sed e Expressões Regulares.

Your book is on the table? So try this one for advanced topics in english.

Documentação em português

sed-HOWTO por Aurélio Marinho Jargas

Um misto de tutorial e guia de referência

Livro Dominando o SED por Aurélio Marinho Jargas

Um livro inacabado sobre Sed, disponível em PDF

Sed 1liners por Ricardo Sartori

Comandos Sed de apenas 1 linha, prontos para copiar e colar

Só Sed por Thobias Salazar Trevisan

Rápido e rasteiro, exemplos do Sed em ação resolvendo problemas comuns

Usando o sed para contar por Thobias Salazar Trevisan

Explicação didática de como incrementar números (e letras) usando o Sed

Lookup Tables & Incrementando em sed por Thobias Salazar Trevisan

Demonstração do uso da técnica de Lookup Tables em Sed

Branches no sed por Thobias Salazar Trevisan

Explicação dos comandos de branch (pulo, tipo GOTO) em Sed

Expressões Regulares, por Aurélio Marinho Jargas

Vários documentos e um livro inteiro para você entender que ^#!.*$ não é um xingamento

Dicas soltas de Sed por Aurélio Marinho Jargas

Diquinhas soltas, rápidas, para ler e esquecer

Your book is still on the table? por Aurélio Marinho Jargas

So you must see the WorldWide Sed Portal

Depurador (debugger)

O sedsed é um depurador (debugger) para scripts sed escrito em Python. Sempre que seu script crescer e ficar confuso, ou estiver usando o HOLD SPACE, esse depurador salvará a sua vida lhe mostrando o conteúdo dos buffers internos do sed enquanto o script é executado.

Além disso o mesmo programa também serve como embelezador de código ("indentation") e também converte scripts sed para páginas HTML coloridas.

Alguns Programas

Aqui estão alguns programinhas em Sed que eu fiz. Alguns estão com o nome e comentários em inglês porque eu os postei em listas gringas e não tive tempo/saco de traduzir. Se você tem, traduza e me mande que eu coloco aqui :D

sokoban.sed: o clássico jogo Sokoban escrito em sed

justify.sed: justificador de texto

mail-iso2txt.sed: traduz os =20 e outros aliens que às vezes aparecem em mensagens de e-mail

wrap-forced.sed: quebra as linhas exatamente na coluna especificada, sem se importar com o contexto

yahoogroups-kill-sig.sed: apaga a propaganda do Yahoo! das mensagens de e-mail (TXT ou HTML)

escape.sed: converte os símbolos [^A-Za-z0-9_] para hexadecimais, usando a notação de internet como %20

unescape.sed: desconverte o que o escape.sed converteu

txt2sgml-sed: um conversor simples de arquivos texto puro (TXT) para SGML

Quer ouvir um pouco de SED?

Nos dias 27 e 28 de outubro de 1999, eu fiz uma palestra sobre Sed e Expressões Regulares para os funcionários da Conectiva.

A palestra foi gravada e aqui está um resumão dela, divido em dois arquivos. Provavelmente quase nada é aproveitável desses arquivos, visto que não é a palestra corrida e sim apenas o supra-sumo de cada tópico, mas se servir pra alguém já vale.

É uma pena que eu cortei demais. As frases ficaram grudadas e há poucos trechos com as falas do pessoal que estava assistindo. Dá pra identificar as vozes do Acme e do Marcelo Tosatti, em trechos curtos.

Obrigado ao amigo Fernando Rodrigues por ter convertido para MP3 os arquivos originais que estavam em Real Audio.

Segue uma descrição dos tópicos abordados em cada arquivo:

27 de Outubro de 1999, 13:09 minutos
# assunto descrição
1 nome func s+ed, fluxo, funcionamento, STDIN/STDOUT, regras
2 util substituição de padrões
3 chamada cat A |sed; sed 's///' A > A2
4 cp tática cp;sed;rm - permissões, ligações e atributos
5 delimitador barras, tem que ser 3
6 s///g modificador g: global, + de 1 ocorrência
7 s/\/// escapar a / com um \ para não confundir com o delim
8 s@@@ s/$velho/$novo/, barra é padrão,
9 " ou ' bash. sempre '', caso variável, usa ""
10 $AUX AUX=/1998 ; echo s,$aux,lala,
11 echo sed faz as substituições normais do bash,
12 -n s///p geralmente com -n usa-se o p
13 dica ?
14 s/ ; s/ vários comandos seguidos
15 dica vantagem s/ ; s/ por sed|sed
16 aplics grep, cat, rev, etc
17 = = mostra o número da linha
18 N N grude a próxima linha com a minha atual
20 de Outubro de 1999, 14:39 minutos
# assunto descrição
1 ancoras ^$
2 . qqr carac
3 classe char [], nada é interpretado
4 intervalo 0-9=0123456789, tab ascii, A-z != A-Za-z, showcfont
5 chk domínio ^[A-Za-z0-9.]*, 0,1ou+
6 .* tudo ou nada, coringa
7 o * guloso http://www.lala.com.br:80 '^.*:'
8 + escapado motivos históricos, escapado para ser especial
9 ? .html* casa .htmllllll, então faz .html\?
10 classe neg o 1o carac deve ser o ^, ! é sed, ^ é ER, ^ âncora
11 -html abordagem inversa: o que NÃO pode ter, <[^>]*>
12 técnica nega pois ele é o delimitador
13 é fácil encarar a ER como pequenas partes, ler um a um
14 | deve ser escapados os (), código C
15 aninhando ?
16 buffer ()s, conta da esquerda para a direita, até 9, \1
17 dica sem escapar, depois sai escapando tudo
18 cut trocar a ordem de 2 campos