shell-script-pt
[Top][All Lists]
Advanced

[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:20:52 -0300

Muitissimo obrigado, Julio.
Faltaram as plicas (') no livrinho.Eu havia tentado aspas...
Mas a explicacao, alem de resolver, foi bastante didatica.
Um grande abraco
Renato Alvim
----- Original Message -----
From: Julio Cezar Neves - DISB.O <address@hidden>
To: <address@hidden>
Sent: Friday, July 21, 2000 7:45 PM
Subject: RES: RES: [shell-script] sed ou grep?Again...


:
:
: > ----- Mensagem original -----
: > De: Eliphas Levy Theodoro [SMTP:address@hidden]
: > Enviada em: sexta-feira, 21 de julho de 2000 18:29
: > Para: address@hidden
: > Assunto: 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
: >
: Eliphas, achei brilhante a tua solução, e por não conhecer o \0
: dentro do sed fui testá-lo.
: Antes da execução, tinha o seguinte:
:
: # exec gnome-session
: # exec icewm
: # exec blackbox
: exec kfm
:
: fiz $WM=icewm e executei. Resultou:
:
: # exec gnome-session
: # exec icewm
: # exec blackbox
: #0xec kfm
:
: Acho que não consegui o reproduzir a sua solução por estar sob um
: ksh em um SO SVR4. Vc poderia me dar + detalhes para q possa entender?
:
: > 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 ':) :D
: >
: > --
: > >>> 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
:
: ------------------------------------------------------------------------
: Need a credit card?
: Instant Approval and 0% intro APR with Aria!
: http://click.egroups.com/1/7101/6/_/_/_/964219307/
: ------------------------------------------------------------------------
:
: Inscrição:     address@hidden
:
: Sair da lista: address@hidden
:
: Banco Dados:   http://www.egroups.com/group/shell-script
:



reply via email to

[Prev in Thread] Current Thread [Next in Thread]