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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [shell-script] Substituir valores em um arquivo


From: Cassiano Sombrio_Hp
Subject: RE: [shell-script] Substituir valores em um arquivo
Date: Fri, 28 Dec 2001 16:53:30 -0200

Acho q entendi a resposta, mas não foi isso que eu tentei dizer.
Exemplo:

$ cat -n arq.properties
1   system.startupClass.sucodelaranja=\
2       classes.frutas.laranja
3   system.startupArgs.sucodelaranja=\
4       rendimento=30,\
5       comacucar=true,\
6       litrosdagua=7
7   
8   system.startupClass.sucodeuva=\
9       classes.frutas.uva
10  system.startupArgs.sucodeuva=\
11      rendimento=12,\
12      comacucar=false,\
13      litrosdagua=4
14
15  system.startupClass.sucodeabacaxi=\
16      classes.frutas.abacaxi
17  system.startupArgs.sucodeabacaxi=\
18      rendimento=8,\
19      comacucar=true,\
20      litrosdagua=3
21  
$ 

Quero trocar o parâmetro "rendimento" somente da propriedade
"system.startupArgs.sucodeuva" para 15, como tu disse:

$ sed -e '/system.startupArgs.sucodeuva/,/[^\]$/
s/rendimento=.*,/rendimento=15,/' arq.properties > saida.txt   # ficou bem
legível :P

Pelo o que eu entendia, o endereçamento do comando seria da linha 10, onde
encontra a primeira ocorrência de "system.startupArgs.sucodeuva" desde o
início do arquivo, até a linha 2, onde encontra a primeira ocorrência de uma
linha sem contrabarra no final da linha desde o início do arquivo.
Mas o que ocorreu foi que o endereçamento do comando foi da linha 10 até a
linha 13, que é a primeira ocorrência de uma linha sem contrabarra no final
da linha desde a linha 10. Foi isso que eu achei estranho. Eu sempre achei
que fosse da primeira forma, mas pelo jeito é da segunda.

Consegui explicar?


-----Original Message-----
From: Eliphas Levy Theodoro [mailto:address@hidden]
Sent: sexta-feira, 28 de dezembro de 2001 15:29
To: address@hidden
Subject: Re: [shell-script] Substituir valores em um arquivo


Cassiano Sombrio_Hp, @ 16:00:

> Bah, e não é que funciona?! :)
> Brincadeira. Valeu mesmo, é isso que eu preciso, e justamente quando não
> houver mais barra invertida é que deve ser "fechado" o endereçamento das
> linhas a alterar. Sinto muito pra quem tiver que dar manutenção nesse
> script. :)
> Só que eu não entendi uma coisa: os endereços do comando a executar não
são
> absolutos? Tipo, não é da primeira linha que ele achar a primeira
expressão
> regular até a primeira linha que ele achar a segunda expressão regular? Ou
o
> segundo é relativo ao primeiro?

Hmm. Acho que entendi a pergunta mas temo não responder bem em palavras.
Vai em regex ':)

O endereçamento pode ser feito:

Em uma linha específica:   3           s/a/b/
                       :   /bla/       s/a/b/
Da linha X a linha Y   :   1,5         s/a/b/
                       :   /bla/,/ble/ s/a/b/

A expressão ou conjunto de expressões (entre chaves) após o
endereçamento vai ser executado só nessa área.

Então, tendo:
sed '1,/ble/ s/a/b/ ; s/c/d/'

Vai, da primeira linha até encontrar 'ble', trocar o primeiro 'a' por
'b'; e em todo o arquivo, trocar o 'c' por 'd'.

Se colocarmos as chaves:
sed '1,/ble/ { s/a/b/ ; s/c/d/ ; }'

Ou especificar separadamente:
sed '1,/ble/ s/a/b/ ; 1,/ble/ s/c/d/'

O endereço vale para as duas expressões.

Entendi a pergunta? Entendeu a resposta? ':)


> -----Original Message-----
> From: Eliphas Levy Theodoro [mailto:address@hidden]

> /<propriedade>/,/[^\]$/ s/../../

-- 
Eliphas

Anyone sending unsolicited bulk email (UBE, SPAM) to this address will
be charged a $25 handling fee plus a $5 network traffic fee per
started kilobyte. By extracting my address from this message or its
header, you agree to these terms.
Nevertheless, spammers trying to auto-extract addresses from this
message will definitely want to include address@hidden, address@hidden,
and address@hidden



Sair da lista: address@hidden
Banco Dados:   http://www.egroups.com/group/shell-script 

Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html 



reply via email to

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