#!/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

Seja bem-vindo(a) ao portal do Sed. Ele é um editor de textos? É uma linguagem de programação? É um comando do UNIX? É um filtro? Na verdade, é isso tudo e mais um pouco :)

Acompanhe aqui vários artigos sobre o Sed, escritos em português.

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.

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 Sed World 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.

Programas em Sed

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.

arkanoid.sed
O clássico jogo Arkanoid (Breakout) 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.

GNU Sed versão 3.02.80

Nem lembro mais porque eu guardava essa versão específica do Sed, mas tem algo a ver com a troca de mantenedor do programa. A versão seguinte a essa contava com firulas inúteis, que eu não gostei. Hoje isso já não faz mais diferença na minha vida (hehe), então que fique aqui para fins meramente arqueológicos:

Palestra sobre Sed

Nos dias 27 e 28 de outubro de 1999 (é, faz tempo, tou véio), 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.

Nas tabelas seguintes, há uma descrição breve do assunto de cada trecho. Acompanhe os bips para saber quando passou de um trecho para o outro.

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 use '' ou "" ao redor
10 $aux aux=/1998 ; echo sed 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 aplicativos 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 âncoras ^$
2 . qualquer caractere
3 classe char [], nada é interpretado
4 intervalo 0-9 = 0123456789, tabela ASCII, A-z != A-Za-z
5 chk domínio ^[A-Za-z0-9.]*, zero uma ou mais vezes
6 .* tudo ou nada, curinga
7 o * guloso http://www.lala.com.br:80 — ^.*:
8 \+ motivos históricos, escapado para ser especial
9 \? .html* casa .htmllllll, então faz .html\?
10 classe neg 1º caractere deve ser ^, ! é negação no sed
11 tags 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 \| devem ser escapados os (), código C
15 aninhando parênteses dentro de parênteses
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