Editar XML com SED - Ignorar a barra "/" [RESOLVIDO]

1. Editar XML com SED - Ignorar a barra "/" [RESOLVIDO]

Daniel Moreira
danielmoreira5

(usa CentOS)

Enviado em 17/09/2015 - 08:48h

Bom dia a todos,

Estou com o seguinte problema:

Preciso editar um arquivo xml que contém uma linha com o seguinte conteúdo:

<databasePassword>111111</databasePassword>

Criei um Shell Script assim:

#!/bin/bash
base_dados=1
# CONFIGURANDO CONEXÃO COM A BASE DE DADOS

cd /usr/local/se/src/configurator
chmod 750 run.sh

echo "Para confiuração da conexão com a base de dados precisaremos de algumas informações..."
echo -n "Nome da base de dados: "
read database_name
echo ""
echo -n "Usuário de conexão: "
read database_user
echo ""
echo -n "Senha de conexão: "
read database_user_pass
echo ""
echo "Editando XML de configuração..."
sed 's/<tabasePassword>111111<\/databasePassword>/<databasePassword>'$database_user_pass'<\/databasePassword>/' /usr/local/se/conf/database_config.xml


O script executa sem erros porém o arquivo não é editado.

tentei alterar o comando para os seguinte:

sed "s/<tabasePassword>111111<\/databasePassword>/<databasePassword>$database_user_pass<\/databasePassword>/" /usr/local/se/conf/database_config.xml

sed 's,<tabasePassword>111111<\/databasePassword>,<databasePassword>'$database_user_pass'<\/databasePassword>,' /usr/local/se/conf/database_config.xml

Porém de todas as formas ele executa mas não edita o arquivo e não da erro. Tentei os comandos acima também substituindo a variável $database_user_pass por um valor e rodando direto no shell e ocorre o mesmo problema.

alguém tem ideia de como posso fazer para descobrir o que está acontecendo?

Obrigado!!!


  


2. MELHOR RESPOSTA

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 24/09/2015 - 14:50h

Olá,

O erro esta comando sed... Vc esta pedindo pra ele substituir a string <tabasePassword>... mas, de acordo com a saída do seu cat, o certo seria <databasePassword>...

tente assim:

sed -i "s/<databasePassword>111111<\/databasePassword>/<databasePassword>sesuite<\/databasePassword>/" /usr/local/se/conf/database_config.xml 


abs,
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---

3. Re: Editar XML com SED - Ignorar a barra "/" [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 17/09/2015 - 23:44h


Para editar o arquivo, vc usa sed -i
Lembre-se que vai perder os dados originais do arquivo, talvez seria melhor criar outro, sed .... arquivoOriginial > arquivoModificado


4. Re: Editar XML com SED - Ignorar a barra "/" [RESOLVIDO]

Daniel Moreira
danielmoreira5

(usa CentOS)

Enviado em 18/09/2015 - 08:14h

rai3mb escreveu:


Para editar o arquivo, vc usa sed -i
Lembre-se que vai perder os dados originais do arquivo, talvez seria melhor criar outro, sed .... arquivoOriginial > arquivoModificado




O -i é apenas para que o arquivo não seja exibido na tela, eu já fiz esta alteração no meso arquivo em outros campos porém este onde as tag tem a / é que está dando problema.

Daniel Moreira
Analista de Instalação


5. Re: Editar XML com SED - Ignorar a barra "/" [RESOLVIDO]

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 18/09/2015 - 10:34h

danielmoreira5 escreveu:
O -i é apenas para que o arquivo não seja exibido na tela, eu já fiz esta alteração no meso arquivo em outros campos porém este onde as tag tem a / é que está dando problema.

Daniel Moreira
Analista de Instalação


Olá Daniel,
Permita-me corrigi-lo. A opção -i do sed é para realizar a alteração diretamente no arquivo original. Logo, ele não mostra a saída tbm.

O seu problema não est na barra (vc construiu corretamente esta parte), o problema esta no caracter especial $ (considerado fim de linha). Para corrigir isso, use as aspas duplas no comando. Assim:
sed -i "s/<tabasePassword>111111<\/databasePassword>/<databasePassword>'$database_user_pass'<\/databasePassword>/" /usr/local/se/conf/database_config.xml 


OBS: Confira antes se o arquivo original esta ok, pois as execuçoes anteriores podem ter alterado seu arquivo.

abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


6. Re: Editar XML com SED - Ignorar a barra "/" [RESOLVIDO]

Daniel Moreira
danielmoreira5

(usa CentOS)

Enviado em 24/09/2015 - 11:58h

olha testei té mesmo por fora do script digitando diretamente a senha no lugar do '$data_base_pass' e mesmo assim ele executa sem erros e não altera o arquivo, segue bash de comandos:

[root@localhost seinstall]# cat /usr/local/se/conf/database_config.xml
<?xml version='1.0' ?>
<database>
<databaseList>
<database>
<adoPort/>
<connectionName>sesuite</connectionName>
<databasePassword>111111</databasePassword>
<databaseUser>sesuite</databaseUser>
<db>Softexpert</db>
<domain>192.168.1.60</domain>
<driver>net.sourceforge.jtds.jdbc.Driver</driver>
<enable>true</enable>
<encrypted>false</encrypted>
<instance></instance>
<oraHome/>
<port>1433</port>
<server>sesuite</server>
<synom>false</synom>
<tableSpaceData/>
<tableSpaceIndexes/>
<tns/>
</database>
</databaseList>
</database>
[root@localhost seinstall]# sed -i "s/<tabasePassword>111111<\/databasePassword>/<databasePassword>sesuite<\/databasePassword>/" /usr/local/se/conf/database_config.xml
[root@localhost seinstall]# cat /usr/local/se/conf/database_config.xml <?xml version='1.0' ?>
<database>
<databaseList>
<database>
<adoPort/>
<connectionName>sesuite</connectionName>
<databasePassword>111111</databasePassword>
<databaseUser>sesuite</databaseUser>
<db>Softexpert</db>
<domain>192.168.1.60</domain>
<driver>net.sourceforge.jtds.jdbc.Driver</driver>
<enable>true</enable>
<encrypted>false</encrypted>
<instance></instance>
<oraHome/>
<port>1433</port>
<server>sesuite</server>
<synom>false</synom>
<tableSpaceData/>
<tableSpaceIndexes/>
<tns/>
</database>
</databaseList>
</database>
[root@localhost seinstall]#


tonyhts escreveu:

danielmoreira5 escreveu:
O -i é apenas para que o arquivo não seja exibido na tela, eu já fiz esta alteração no meso arquivo em outros campos porém este onde as tag tem a / é que está dando problema.

Daniel Moreira
Analista de Instalação


Olá Daniel,
Permita-me corrigi-lo. A opção -i do sed é para realizar a alteração diretamente no arquivo original. Logo, ele não mostra a saída tbm.

O seu problema não est na barra (vc construiu corretamente esta parte), o problema esta no caracter especial $ (considerado fim de linha). Para corrigir isso, use as aspas duplas no comando. Assim:
sed -i "s/<tabasePassword>111111<\/databasePassword>/<databasePassword>'$database_user_pass'<\/databasePassword>/" /usr/local/se/conf/database_config.xml 


OBS: Confira antes se o arquivo original esta ok, pois as execuçoes anteriores podem ter alterado seu arquivo.

abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---




Daniel Moreira
Analista de Instalação


7. Re: Editar XML com SED - Ignorar a barra "/" [RESOLVIDO]

Daniel Moreira
danielmoreira5

(usa CentOS)

Enviado em 24/09/2015 - 15:24h

tonyhts escreveu:

Olá,

O erro esta comando sed... Vc esta pedindo pra ele substituir a string <tabasePassword>... mas, de acordo com a saída do seu cat, o certo seria <databasePassword>...

tente assim:

sed -i "s/<databasePassword>111111<\/databasePassword>/<databasePassword>sesuite<\/databasePassword>/" /usr/local/se/conf/database_config.xml 


abs,
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


Puts :S de tanto mexer nisto eu estou meio vesgo, caramba esta era a raiz de todo problema. agora deu certo. muito obrigado!!!

Daniel Moreira
Analista de Instalação






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts