Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Dominando o Sed, Notas de estudo de Matemática

Dominando o Sed

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 02/08/2009

marcos-antonio-50
marcos-antonio-50 🇧🇷

5 documentos

1 / 113

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Pré-visualização parcial do texto

Baixe Dominando o Sed e outras Notas de estudo em PDF para Matemática, somente na Docsity!

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!

  • Instalação..................................................................................................................
  • Endereço...................................................................................................................
    • Um endereço sempre aponta para uma linha inteira..........................................................
    • Como endereçar pelo número da linha..............................................................................
    • Como endereçar a primeira e/ou a última linha.................................................................
    • Como endereçar a linha que contém determinada palavra.................................................
    • Como aplicar vários comandos em um mesmo endereço...................................................
    • Como endereçar um trecho entre duas linhas, incluindo-as..............................................
    • Como endereçar um trecho entre duas linhas, excluindo-as..............................................
    • Como negar um endereço, não aplicando comandos nele..................................................
    • Como endereçar a primeira ocorrência de um padrão........................................................
    • Como endereçar a primeira ocorrência de um trecho.........................................................
    • Como endereçar a última ocorrência de um padrão...........................................................
    • Como endereçar a N-ésima ocorrência de um padrão.......................................................
    • Tem uma barra / no padrão que procuro, e agora?............................................................
    • Como usar outro delimitador fora a barra /......................................................................
    • O que acontece com endereços inválidos..........................................................................
    • E se eu colocar um endereço vazio como //?.....................................................................
    • E se eu não colocar nenhum endereço?.............................................................................
    • Detalhes sórdidos sobre endereços..................................................
  • Arquivo....................................................................................................................
    • Como gravar o resultado num arquivo..............................................................................
    • Como gravar o resultado no próprio arquivo original........................................................
    • Como guardar os comandos sed num arquivo (script).......................................................
    • Como utilizar um script sed........................................................
    • Como tornar executável um script sed..............................................................................
    • Como monitorar um arquivo com a ajuda do sed..............................................................
    • Como ler o conteúdo de um arquivo.................................................................................
    • Como gravar um trecho de texto num arquivo..................................................................
  • Quebra de linha.......................................................................................................
    • Como apagar uma quebra de linha, juntando duas linhas..................................................
    • Como apagar todas as quebras de linha, deixando tudo numa só linha.............................
    • Como fazer um laço.........................................................................................................
    • Como fazer um laço com condicional de saída..................................................................
    • Como fazer um laço com condicional de entrada..............................................................
    • Como fazer um laço utilizando o reserva..........................................................................
    • Como substituir alguma coisa por uma quebra de linha....................................................
  • MAIÚSCULAS/minúsculas.........................................................................................
    • Como deixar todo o texto em caixa alta (ou baixa)............................................................
    • Como inverter a caixa de todas as letras...........................................................................
    • Como levantar a caixa da primeira letra de cada linha.......................................................
    • Como levantar a caixa da primeira letra de cada palavra..................................................
    • Como ignorar a diferença de maiúsculas e minúsculas....................................................
  • Cumbuca...............................................................................................................
    • Exemplos Úteis.......................................................................
    • Emulando comandos UNIX/Linux....................................................................................
  • Agradecimentos.....................................................................................................

Dominando o SED - Instalação

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!

UNIX/Linux/Mac OS X

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.

Windows/DOS

Usuários de Windows têm duas opções para usar o sed:

  • SED.EXE no DOS
  • sed no Cygwin

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:

  1. Endereço pelo número da linha
  2. Endereço pelo conteúdo da linha
  3. Endereço múltiplo, que abrange mais de uma linha

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:

  1. "Quero a linha número N"
  2. "Quero a linha que contém a palavra ABCDE"
  3. "Quero todas as linhas que estejam entre essas duas linhas"

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

  • alface
  • vagem Apenas como curiosidade, este exemplo gera um resultado idêntico ao do comando: prompt$ grep -v o 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

  • alface
  • cenoura
  • couve
  • couve
  • couve
  • couve
  • nabo
  • vagem Ficar repetindo o endereço para cada comando é muito inconveniente. Utilizamos então as chaves {}, que nos permitem agrupar vários comandos em um mesmo bloco. Este bloco recebe um endereço, que será usado por todos os comandos contidos nele.

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.