Escapando caracteres com o sed [RESOLVIDO]

1. Escapando caracteres com o sed [RESOLVIDO]

André Franklin
andre.cruz

(usa Debian)

Enviado em 22/08/2011 - 17:04h

Pessoal, estou criando um script para fazer automatização de instalação de alguns softwares, no meio da parada preciso editar um arquivo, preciso trocar essa estring $conf['servers'][0]['host'] = ''; por essa
$conf['servers'][0]['host'] = 'localhost';

Consegui essa tarefa de duas formas, todas meio gambi

Forma 1 apagando pelo número da linha =
sed -i '18s/.*/ $conf['\'servers\''][0]['\'host\''] = '\'localhost\''/g

Forma 2 usando expressões regulares =
sed -i 's/$conf.*.host.*/$conf['\'servers\''][0]['\'host\''] = '\'localhost\'/g


Gostaria de pegar a string inteira para não ter erro na hora de editar o arquivo, alguem sabe como escapar esses caracteres?

Valeu galera do VL pela atenção, quem tiver uam dica vai ser bem vinda...



  


2. usando while pra ler as linhas

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 22/08/2011 - 19:35h

Vc pode usar o while pra ler as linhas do seu arquivo e, em seguida, usar o if para verificar se a linha é igual a string que vc quer substituir. O resultado estará em novo_arquivo.txt


cat arquivo.txt | while read line
do

if [ "$line" == "\$conf['servers'][0]['host'] =" ]; then

echo "\$conf['servers'][0]['host'] = 'localhost'" >> novo_arquivo.txt

else

echo "$line" >> novo_arquivo.txt

fi

done


Testei aqui e deu certo.

Boa sorte!


3. Re: Escapando caracteres com o sed [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 23/08/2011 - 12:17h

devem haver inúmeras formas ... com o sed realmente é chato trabalhar com caracteres especiais, mas cheguei a estas duas:

sed 's/$conf\[.'servers.'\]\[0\]\[.'host.'\] =/& '\''localhosts'\'';/'

ou

sed 's/$conf\[.'servers.'\]\[0\]\[.'host.'\] =/$conf\['\''servers'\''\]\[0\]\['\''host'\''\] = '\''localhost'\''; /'


4. Salve galera!!!!!

André Franklin
andre.cruz

(usa Debian)

Enviado em 23/08/2011 - 16:43h

E ae galera, valeu pelo retorno... fdmarp certinho a sua string com os escapes consegue pegar a string, show.. agora to estudando pra valer todos os escapes do sed.. hehehe

Salve alexandregms, seguinte, deixa eu ve se eu fiz corretamente a ideia do seu script, acompanhe:
script que vai ler o arquivo.txt
#################################
!/bin/bash
cat arquivo.txt | while read line
do

if [ "$line" == "\$conf['servers'][0]['host'] =" ]; then

echo "\$conf['servers'][0]['host'] = 'localhost'" >> novo_arquivo.txt
else
echo "$line" >> novo_arquivo.txt
fi
done
##################################
Conteúdo do arquivo arquivo.txt
aaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbb
ccccccccccccccccccc
$conf['servers'][0]['host'] ="
ddddddddddddddddddddddddddddd]
eeeeeeeeeeeeeeeeeeeeeeeeeeeeee
##################################
executa script e cria o novo arquivo novo_arquivo.txt =
aaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbb
ccccccccccccccccccc
$conf['servers'][0]['host'] = 'localhost'
ddddddddddddddddddddddddddddd]
eeeeeeeeeeeeeeeeeeeeeeeeeeeeee
############################################
Pô brother, me pareceu massa demais esse script, mas ele nao conseguiu fazer isso aqui não.. no arquivo criado, é mostrado ainda o mesmo conteúdo do arquivo.txt, tem como vc validar ai?

Valeuuu galera, muito obrigado pela ajuda..


5. Re: Escapando caracteres com o sed [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 23/08/2011 - 17:35h

Faltou a última aspas duplas no final da linha! Segue lá! Ja validei aqui !!
Alterando:

#!/bin/bash
cat arquivo.txt | while read line; do

if [ "$line" == "\$conf['servers'][0]['host'] =\"" ]; then

echo "\$conf['servers'][0]['host'] = 'localhost'" >> novo_arquivo.txt

else

echo "$line" >> novo_arquivo.txt

fi

done





6. Escapando caracteres com o sed[RESOLVIDO]

André Franklin
andre.cruz

(usa Debian)

Enviado em 24/08/2011 - 15:17h

Valeu galera.. show.. tudo certinho alexandregms, esse script vai ser muito util no meu dia a dia..

Valeu pela ajuda e grande abraço galera..






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts