




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Dominando o Sed
Tipologia: Notas de estudo
1 / 113
Esta página não é visível na pré-visualização
Não perca as partes importantes!





























































































Escrevi este livro em 2002, entre os meses de Março e Setembro. É uma obra inacabada, que contém cerca de 60% do conteúdo planejado. Após este período a escrita parou e eu não tive mais vontade de continuar. A idéia era fazer um guia completo sobre o sed, uma bíblia que abrangesse todos os tópicos, dando dicas avançadas. Hoje (Novembro de 2005) estou publicando o livro na Internet, com o texto intocado, como parou em 2002. Considero este um trabalho que não deve ficar restrito ao meu computador pessoal, pois mesmo incompleto pode ajudar outras pessoas a dominarem o assunto. Se você é novato em sed, leia o sed-HOWTO (http://aurelio.net/sed/sed-HOWTO) primeiro. Terminada a leitura deste livro, domine também as Expressões Regulares (http://aurelio.net/er) para obter o máximo do sed. DIREITOS AUTORAIS (COPYRIGHT): Este conteúdo é livre, você pode reproduzi-lo em qualquer meio, mas sempre deve citar a autoria (Aurélio Marinho Jargas) e o endereço oficial http://aurelio.net/sed/livro. Boa leitura!
Dominando o SED - Instalação
Antes de mais nada, o site http://sed.sf.net é a fonte de informação mais atualizada sobre onde encontrar o sed para as várias plataformas suportadas. Consulte-o!
Espera aí, você vai me dizer que tem um UNIX/Linux e não tem sed instalado nele? Conta outra! &:D Para atualizar uma versão existente, o procedimento é o mesmo do de outros programas, e isso pode requerer a instalação de um RPM, um pacote .deb ou baixar um .tar.gz e compilá- lo.
Usuários de Windows têm duas opções para usar o sed:
Dominando o SED - Instalação O sed nasceu no UNIX, mas várias versões do programa foram feitas para MS-DOS devido à falta de uma ferramenta semelhante nesse sistema. O nome genérico é SED.EXE, mas também pode ser encontrado como SED.ZIP, caso acompanhe documentação. A instalação não tem segredo. Basta copiar o arquivo SED.EXE para um diretório que esteja no PATH do seu MS-DOS. Lugares comuns são C:\Windows, C:\WIN ou C:\WINNT. Para quem gosta de UNIX/Linux, é aconselhável instalar o Cygwin (http://aurelio.net/cygwin), uma solução completa com ferramentas UNIX que roda no Windows. Com um clique, você tem acesso a uma janelinha preta com sed, bash, cat, tr, grep, find, vi e dezenas de outros programas. Vale conferir!
Dominando o SED - Endereço Sabemos que quanto mais detalharmos o endereço, colocando todos os dados corretamente, mais fácil é para o carteiro encontrar o destino de nossa carta. Porém, na falta do CEP ou do número da casa, a carta não chegará ao seu destino por causa do endereço incorreto. No sed é assim que acontece. Um endereço correto é indispensável para que o comando seja aplicado no lugar certo. Assim, torna-se essencial para o programador, ao escrever um comando sed, especificar o endereço com exatidão e sem ambigüidades. O domínio do endereço diferencia os gurus dos gafanhotos Façamos um mergulho profundo no assunto para dissecar todas as formas de utilização e conhecer as soluções para os problemas mais rotineiros. Há três tipos de endereços:
Dominando o SED - Endereço Um endereço sempre aponta para uma linha inteira A primeira coisa que deve ser assimilada sobre o conceito de endereço é que ele sempre referencia uma linha inteira, não somente parte dela. Afinal, sendo o sed um editor orientado à linha, o endereço não poderia ser diferente. Então, sempre que pensar em endereços, pense em linhas. Linhas inteiras. Pode-se redefinir os três tipos de endereço e ilustrar como cada um deles é interpretado pelo sed:
Dominando o SED - Endereço Como endereçar a primeira e/ou a última linha Para endereçar a primeira linha, é barbada: 1. Nada mais. Vamos apagá-la? prompt$ sed '1 d' arquivo Moleza. Mas e a última? Nem sempre sabemos exatamente quantas linhas tem o arquivo, e é incômodo ter que usar outro programa para fazer isso antes de passarmos esse número ao sed. Para resolver esse problema, temos um caractere especial de endereço: o cifrão $, que representa a posição da última linha do arquivo. Então é fácil apagar a última linha: prompt$ sed '$ d' arquivo Note que em sistemas UNIX o uso das aspas simples é obrigatório. Sem elas o shell tentaria expandir a variável $d e o sed receberia um comando vazio.
Dominando o SED - Endereço Como endereçar a linha que contém determinada palavra Embora seja prático e fácil endereçar diretamente pelo número da linha, os problemas da vida real nos mostram que nem sempre temos o privilégio de saber exatamente em qual linha estão os dados procurados. E quanto mais se trabalha com dados, mais se aprende que não é bom confiar em posições fixas porque elas raramente são fixas de verdade. Elas se mudam sem deixar telefone, email... &:) Tendo em vista estas necessidades, também podemos definir endereços que sejam palavras ou trechos de uma linha. Por exemplo, hoje no lanche comeremos frutas que... PÁRA! Não é odioso ter em livros técnicos esses exemplos "didáticos" envolvendo bananas, maçãs e abacaxis? Não é repugnante o autor tratar os leitores como crianças de primário? Seus problemas acabaram! Nada de exemplos com frutas por aqui. Hoje, no lanche, comeremos verduras :) e como somos modernos e informatizados (nerds), colocamos a lista de compras num arquivo.
Dominando o SED - Endereço Um endereço pode servir para mais de uma linha, então o comando será aplicado em todas as linhas que forem encontradas. Dessa forma, para apagar da nossa lista de verduras todas as linhas que tenham a letra "o", fazemos: prompt$ sed '/o/ d' verduras.txt
Dominando o SED - Endereço Como aplicar vários comandos em um mesmo endereço Agora que já sabemos quais são os dois tipos básicos de endereço e como defini-los, vamos começar a complicar um pouco o assunto. Digamos que você goste muito de couve, mas muito mesmo, e queira que ela apareça mais três vezes na lista de verduras. Teremos então três comandos a serem aplicados na mesma linha: prompt$ sed '/couve/ p ; /couve/ p ; /couve/ p' verduras.txt
Dominando o SED - Endereço Como endereçar um trecho entre duas linhas, incluindo-as Tudo ia bem na nossa vida de endereçadores, até o dia em que precisamos endereçar mais de uma linha. Ou melhor, um trecho de texto entre duas linhas. Por exemplo: como apagar da linha 5 à linha 10 de um arquivo? Numa primeira tentativa, afobada, a carreirinha prompt$ sed '5d ; 6d ; 7d ; 8d ; 9d ; 10d' arquivo ... funciona. Mas e se quiséssemos apagar 20 ou 30 linhas? Esse método não é prático. No sed, podemos especificar dois endereços, um de início e outro de fim, para representar os limites de um trecho entre duas linhas. Uma vírgula separa os dois endereços. Então, a tarefa anterior de apagar as linhas fica assim: prompt$ sed '5,10 d' arquivo Ou seja, da linha 5 até a linha 10, apague tudo. Lembre-se porém, que um endereço também pode ser o cifrão $ ou um padrão. Então agora podemos misturar todos os tipos de endereço. Veja os exemplos:
Dominando o SED - Endereço 1,/couve/ da primeira linha até a linha que contém 'couve' 10,$ da linha 10 até o fim do arquivo /couve/,$ da linha que contém 'couve' até o fim do arquivo /couve/,/vagem/ da linha que contém 'couve' até a linha que contém 'vagem' 1,$ da primeira linha até a última (ou seja, todas) Como pudemos notar, o trecho casado inclui as linhas de início e fim do endereço. Se não era este seu objetivo, veja o tópico seguinte.