#!/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.
- sed1-19991027.mp3 (2,3 Mb): Como o Sed funciona e seus comandos básicos
- sed2-19991028.mp3 (2,6 Mb): Expresões Regulares em Sed
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 |
