[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: RES: [shell-script] sed ou grep?Again...
From: |
Renato Alvim |
Subject: |
Re: RES: [shell-script] sed ou grep?Again... |
Date: |
Sat, 22 Jul 2000 02:56:17 -0300 |
Muito obrigado a todos voces.
Sem duvida essa e a lista onde obtenho mais rapidamente as respostas.
E sempre obtenho respostas.
Um grande abraco a todos.
Renato Alvim
----- Original Message -----
From: Eliphas Levy Theodoro <address@hidden>
To: <address@hidden>
Sent: Friday, July 21, 2000 6:28 PM
Subject: Re: RES: [shell-script] sed ou grep?Again...
: Julio Cezar Neves - DISB.O, @ 16:07:
:
: > > De: Renato Alvim [SMTP:address@hidden]
:
: > > Quero localizar a linha que contem o gerenciador de janelas escolhido,
: > > descomente-a, mas terei que localizar tambem a linha que contem o
: > > atualmente em
: > > uso e comenta-la.
: > >
: > > Num livrinho da Editora Escala, desses que vendem na banca de jornais,
: > > ha uma rapida informacao sobre o comando sed.Algo assim :
: > > sed -s/Andre/Wagner/ < arquivo.texto substituiria todas as ocorrencias da
: > > palavra Andre pela palavra Wagner, no arquivo.
:
: > Renato, não é bem assim! A expressão regular deve vir entre aspas ou
: > apóstrofos para que o shell não a interprete, e sim o sed. Mesmo q vc
:
: não é estritamente necessário, mas recomendável. o shell vai expandir o que
: ele puder e você tem de estar ciente disso. mas no caso acima nada seria
: expandido, só se houvesse alguns '*' ou '?'.
:
: > tivesse feito desta forma, vc trocaria somente a 1a. ocorrencia de Andre em
: > cada linha. Para globalizar a pesquisa exista o parâmetro "g". Assim, para
: > trocar todas as ocorrências de Andre por Wagner vc deveria fazer:
: >
: > sed '1,$s/Andre/Wagner/g' ArqNomes
: > onde "1,$" significa da 1a. à última linha e é opcional e o "g" é
: > para pesquisar todas as ocorrencias de Andre em cada linha.
:
: > Vai ai uma definição um pouco + detalhada:
: > sua sintaxe geral é:
:
: pulando a descrição detalhada...
:
: > Suponha q o seu .xinitrc esteja assim:
: > # exec gnome-session
: > exec icewm
: > # exec blackbox
: > # exec kfm
: > e vc queira comentar o icewm e descomentar o kfm. Então:
: > sed 's/^exec icewm/# exec icewm/' .xinitrc | sed 's/^# exec kfm/exec
: > kfm/'
: > onde o "^" serve somente para dizer que a pesquisa esta sendo feita
: > no início de cada linha.
:
: eu faria um pouquinho diferente, já que não sabemos qual seria a linha que
: já estava descomentada:
:
: cp -a .xinitrc .xinitrc.bkp # preserva permissões
: sed "s/^[^#]/#\0/; s/#exec $WM/exec $WM/" .xinitrc.bkp > .xinitrc
:
: note as aspas duplas no segundo item. eu gosto de usar sempre aspas simples,
: e quando preciso que o shell expanda uma variável, como no exemplo, uso as
: duplas. isso ajuda a saber onde não é só o sed que está agindo.
:
: explicação das expressões regulares:
: s/ substitua
: ^[^#] algo começando (^) por algo que não seja # ([^#])
: / por
: #\0 um # e o conteúdo acima (do não-#)
: ; e...
: s/ substitua
: #... a linha tal
: / por
: ex... a linha tal
:
:
: mais sobre sed? address@hidden ':)
:
: --
: >>> from conectiva import eliphas
: >>> print eliphas.commandline
: $ vi .bashrc
: >>> print eliphas.url+" - "+eliphas.uin+" "+eliphas.linuxuser
: http://www.conectiva.com.br/~eliphas - 4856656 88709
:
:
: ------------------------------------------------------------------------
: 0% Introductory APR!
: Instant Approval!
: Aria Visa - get yours today.
: http://click.egroups.com/1/7102/6/_/_/_/964214936/
: ------------------------------------------------------------------------
:
: Inscrição: address@hidden
:
: Sair da lista: address@hidden
:
: Banco Dados: http://www.egroups.com/group/shell-script
: