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: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
:



reply via email to

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