#!/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
Destaques: |
Veja também: |
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.
Lá no meu blog eu contei a minha história com o Sed, que começou em 1997 e mudou minha vida, culminando com a escrita de um livro sobre Expressões Regulares.
Lista 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
- Alfabeto do sed por Aurelio Marinho Jargas
- Uma cola rápida de todos os comandos do sed, em ordem alfabética.
- Sed HOWTO por Aurelio Marinho Jargas
- Este documento se propõe a ser um tutorial e um guia de consulta de Sed ao mesmo tempo. Ele apresenta o Sed aos poucos, explicando seu funcionamento, mas também conta com dicas avançadas. Este guia é exclusivo de Sed, as Expressões Regulares não são abordadas.
- Dominando o Sed por Aurelio Marinho Jargas
- Um livro inacabado sobre Sed, disponível gratuitamente em PDF. Ele cobre instalação, todos os detalhes dos endereços, como lidar com arquivos, quebras de linha, maiúsculas e minúsculas, contando com vários exemplos didáticos com que podem ser testados em sua máquina.
- 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 Aurelio Marinho Jargas
- Vários documentos e um livro inteiro para você entender que
^#!.*$
não é um xingamento. - Dicas soltas de Sed por Aurelio Marinho Jargas
- Diquinhas soltas, rápidas, para ler e esquecer.
Em inglês
- Portal mundial do Sed por Aurelio Marinho Jargas
- Este é o portal mundial do Sed, com dezenas de links para programas, artigos, sites e até jogos! Prepare-se para gastar MUITAS horas lendo todo o conteúdo.
- Sed - An Introduction and Tutorial
- Um guia bem completo, cheio de exemplos, que explica em detalhes o funcionamento do Sed.
Depurador (debug)
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. Veja por exemplo como ficou o SedSokoban em HTML.
Programas / Scripts
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 de empurrar caixas, Sokoban, inteiramente escrito em Sed. O jogo está bem completo, com 90 níveis, cores, comandos, detecção de vitória e movimentação do personagem usando as setinhas do teclado.
- arkanoid.sed
-
O clássico jogo Arkanoid (Breakout) inteiramente escrito em Sed. O jogo está bem completo, com cores, explosões cadenciadas, possibilidade de segurar a bolinha no bastão e tem 3 vidas.
- 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. Este é um script bem antigo, que deu origem ao txt2tags.
Mensagens de erro
Eu sou o tradutor do GNU Sed para o português. Isso inclui todas as mensagens que o programa mostra na tela durante o uso, como a tela de ajuda (--help) e as mensagens de erro.
As mensagens originais são bem curtas e difíceis de entender, eu tentei torná-las mais amigáveis, colocando dicas adicionais sobre a possível causa dos problemas. Veja alguns exemplos:
unterminated `s' command
- Comando `s' inacabado (s/// - faltou delimitador)
unknown option to `s'
- Opção desconhecida para o comando `s' (s///?)
Invalid content of \\{\\}
- Conteúdo inválido no \\{\\} (permitidos números e vírgula)
Se o seu Sed está em inglês e você está tendo problemas para decifrar alguma mensagem, dê uma olhada no arquivo de tradução e procure pela frase em questão, pois a tradução pode te ajudar.
GNU Sed 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:
- GNU Sed 3.02.80 — Linux (.tar.gz) (342 Kb)
- GNU Sed 3.02.80 — Linux (RPM) (63 Kb)
- GNU Sed 3.02.80 — Windows (EXE) (68 Kb)
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.
- sed1-19991027.mp3 (2,3 Mb): Como o Sed funciona e seus comandos básicos
- sed2-19991028.mp3 (2,6 Mb): Expressõ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 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 |
Divirta-se!
Sed Superman