[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