2008/11/17 Renato de Oliveira Diogo <[EMAIL PROTECTED]>
> Senhores
>
> boa tarde
>
> estou fazendo um pequeno script substituição de uma string por outra
> (complementação). Porém estou tendo problemas em montar corretamente o
> script do sed, pelo motivo que o conteúdo das minhas variáveis tem
> pontos e barras não sei se o sed está tratando isso como metacaracter:
>
> so para entender, tenho um nome de arquivo 10.168.192.in-addr.arpa.db,
> dele capturo a linha
> file "10.168.192.in-addr.arpa.zone";
> e quero substituir a mesma por:
> file "slaves.rev/10.168.192.in-addr.arpa.zone";
>
>
>
> for I in $( ls );
> do
> zone=`grep file $I | cut -d\" -f2`;
> # echo $zone
> sed -e s/"$zone"/"slaves.rev//$zone"/ $I;
> done
>
> Quando executo o trecho acima, da o erro:
> sed: -e expression #1, char 43: unknown option to `s'
> Obs.: não é as barras duplas, pois ja deixei somente com uma e nao deu na
> mesma.
>
> Alguem pode me dar uma luz? <[EMAIL PROTECTED]>
>
Este negócio da dar uma luz, deixo para as pessoas do sexo feminino :P
Segue uma sugestão sed-only com uma pequena mudança de abordagem:
for l in *; do
sed -i '/file/{s#"#"slaves.rev/#' $l
done
O que o sed está fazendo é provocar a alteração da primeira ocorrência do
caracter " pelo que você quer.
Para testar sem modificar seus arquivos, retire a opção -i.
--
Fabiano Caixeta Duarte
Especialista em Redes de Computadores
Linux User #195299
Ribeirão Preto - SP
[As partes desta mensagem que não continham texto foram removidas]