Discussion:
[shell-script] Comando AWK dentro do arquivo XML
Janduy Euclides janduyeuclides@googlemail.com [shell-script]
2017-10-10 13:24:31 UTC
Permalink
Senhores, bom dia.

Eu estou com um probleminha para alterar um arquivo XML, eu tenho hoje um
arquivo chamado PHONEBOOK.XML, hoje eu faço alteraçoes constantes nele,
apenas no campo "FirstName" vou cololocar a estrutura do arquivo abaixo.
Eu estou criando um script para alterar sem precisar entrar mesmo via (vim,
nano etc...)

Segue uma linha arquivo:

<Contact> <LastName/> *<FirstName>KowalskiEuclides</FirstName>* <Phone>
<phonenumber>3601</phonenumber> <accountindex>1</accountindex>
<downloaded>0</downloaded> </Phone> </Contact>

Em negrito esta o campo que eu previso alterar, somente o nome.

Eu testei a seguinte linha para consultar esse valor.

# more phonebook.xml | awk '/FirstName/ {print $3}'| grep "Kowalski"
Resultado: <FirstName>KowalskiEuclides</FirstName>

Pergunta: Como eu consigo fazer um exclude dos campos (<FirstName> e
</FirstName> ) e coletar somente o nome?



*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training

*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*

*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Jonathan Lessa jonathanlessa@gmail.com [shell-script]
2017-10-10 13:54:24 UTC
Permalink
O pessoal deve lhe passar como fazer com awk, mas uma alternativa com o sed
é:

more phonebook.xml | awk '/FirstName/ {print $3}' | sed -r
"s/<\/?FirstName>//g"


Em 10 de outubro de 2017 10:24, Janduy Euclides
Post by Janduy Euclides ***@googlemail.com [shell-script]
Senhores, bom dia.
Eu estou com um probleminha para alterar um arquivo XML, eu tenho hoje um
arquivo chamado PHONEBOOK.XML, hoje eu faço alteraçoes constantes nele,
apenas no campo "FirstName" vou cololocar a estrutura do arquivo abaixo.
Eu estou criando um script para alterar sem precisar entrar mesmo via (vim,
nano etc...)
<Contact> <LastName/> *<FirstName>KowalskiEuclides</FirstName>* <Phone>
<phonenumber>3601</phonenumber> <accountindex>1</accountindex>
<downloaded>0</downloaded> </Phone> </Contact>
Em negrito esta o campo que eu previso alterar, somente o nome.
Eu testei a seguinte linha para consultar esse valor.
# more phonebook.xml | awk '/FirstName/ {print $3}'| grep "Kowalski"
Resultado: <FirstName>KowalskiEuclides</FirstName>
Pergunta: Como eu consigo fazer um exclude dos campos (<FirstName> e
</FirstName> ) e coletar somente o nome?
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
--
Att.:
Jonathan Lessa
Licenciado em Informática
Jonathan Lessa jonathanlessa@gmail.com [shell-script]
2017-10-10 14:12:25 UTC
Permalink
Com awk achei consegui dessa forma, mas creio que tenha como fazer em uma
só estrutura de awk, sem passar pelo pipe:

more phonebook.xml | awk '/FirstName/ {print $3}' | awk '{gsub
("</?FirstName>","",$1); print}'
Post by Jonathan Lessa ***@gmail.com [shell-script]
O pessoal deve lhe passar como fazer com awk, mas uma alternativa com o
more phonebook.xml | awk '/FirstName/ {print $3}' | sed -r
"s/<\/?FirstName>//g"
Em 10 de outubro de 2017 10:24, Janduy Euclides
Post by Janduy Euclides ***@googlemail.com [shell-script]
Senhores, bom dia.
Eu estou com um probleminha para alterar um arquivo XML, eu tenho hoje um
arquivo chamado PHONEBOOK.XML, hoje eu faço alteraçoes constantes nele,
apenas no campo "FirstName" vou cololocar a estrutura do arquivo abaixo.
Eu estou criando um script para alterar sem precisar entrar mesmo via (vim,
nano etc...)
<Contact> <LastName/> *<FirstName>KowalskiEuclides</FirstName>* <Phone>
<phonenumber>3601</phonenumber> <accountindex>1</accountindex>
<downloaded>0</downloaded> </Phone> </Contact>
Em negrito esta o campo que eu previso alterar, somente o nome.
Eu testei a seguinte linha para consultar esse valor.
# more phonebook.xml | awk '/FirstName/ {print $3}'| grep "Kowalski"
Resultado: <FirstName>KowalskiEuclides</FirstName>
Pergunta: Como eu consigo fazer um exclude dos campos (<FirstName> e
</FirstName> ) e coletar somente o nome?
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
--
Jonathan Lessa
Licenciado em Informática
--
Att.:
Jonathan Lessa
Licenciado em Informática
Janduy Euclides janduyeuclides@googlemail.com [shell-script]
2017-10-10 14:34:31 UTC
Permalink
Entendi, na verdade eu vou fazer o grep so para colocar a variavel que eu
vou coletar.

Exemplo:

variave1=janduy (Isso que vou inputar quando o script rodar)

Ficaria assim:
more phonebook.xml | awk '/FirstName/ {print $3}' | awk '{gsub
("</?FirstName>","",$1); print}' | grep "$variavel1"

​Entende?
;-)​



*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training

*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*

*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Post by Jonathan Lessa ***@gmail.com [shell-script]
Com awk achei consegui dessa forma, mas creio que tenha como fazer em uma
more phonebook.xml | awk '/FirstName/ {print $3}' | awk '{gsub
("</?FirstName>","",$1); print}'
Post by Jonathan Lessa ***@gmail.com [shell-script]
O pessoal deve lhe passar como fazer com awk, mas uma alternativa com o
more phonebook.xml | awk '/FirstName/ {print $3}' | sed -r
"s/<\/?FirstName>//g"
Em 10 de outubro de 2017 10:24, Janduy Euclides
Post by Janduy Euclides ***@googlemail.com [shell-script]
Senhores, bom dia.
Eu estou com um probleminha para alterar um arquivo XML, eu tenho hoje
um arquivo chamado PHONEBOOK.XML, hoje eu faço alteraçoes constantes nele,
apenas no campo "FirstName" vou cololocar a estrutura do arquivo abaixo.
Eu estou criando um script para alterar sem precisar entrar mesmo via (vim,
nano etc...)
<Contact> <LastName/> *<FirstName>KowalskiEuclides</FirstName>* <Phone>
<phonenumber>3601</phonenumber> <accountindex>1</accountindex>
<downloaded>0</downloaded> </Phone> </Contact>
Em negrito esta o campo que eu previso alterar, somente o nome.
Eu testei a seguinte linha para consultar esse valor.
# more phonebook.xml | awk '/FirstName/ {print $3}'| grep "Kowalski"
Resultado: <FirstName>KowalskiEuclides</FirstName>
Pergunta: Como eu consigo fazer um exclude dos campos (<FirstName> e
</FirstName> ) e coletar somente o nome?
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
--
Jonathan Lessa
Licenciado em Informática
--
Jonathan Lessa
Licenciado em Informática
Janduy Euclides janduyeuclides@googlemail.com [shell-script]
2017-10-10 14:59:46 UTC
Permalink
Jonathan, funcionou assim.


#!/bin/bash
arq="phonebook.xml"
cons=$(more $arq | awk '/FirstName/ {print $3}' | sed -r
"s/<\/?FirstName>//g" | grep "$n1")

sleep 2
echo "Nome antigo: "
read n1
sleep 2
echo "Nome novo: "
read n2
sleep 2
echo "aguarde...."
sleep 2
if [ "$n1" != "$resto" ]; then
sed -i "s/$n1/$n2/g" $arq
echo "Phonebook atualizado, Nome:$n2"
else
echo "Nome nao encontrado, tente novamente!"
fi

funcional, acredito que possa melhor mas ja salvou.



*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training

*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*

*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*

Em 10 de outubro de 2017 11:34, Janduy Euclides <
Post by Janduy Euclides ***@googlemail.com [shell-script]
Entendi, na verdade eu vou fazer o grep so para colocar a variavel que eu
vou coletar.
variave1=janduy (Isso que vou inputar quando o script rodar)
more phonebook.xml | awk '/FirstName/ {print $3}' | awk '{gsub
("</?FirstName>","",$1); print}' | grep "$variavel1"
​Entende?
;-)​
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Post by Jonathan Lessa ***@gmail.com [shell-script]
Com awk achei consegui dessa forma, mas creio que tenha como fazer em uma
more phonebook.xml | awk '/FirstName/ {print $3}' | awk '{gsub
("</?FirstName>","",$1); print}'
Post by Jonathan Lessa ***@gmail.com [shell-script]
O pessoal deve lhe passar como fazer com awk, mas uma alternativa com o
more phonebook.xml | awk '/FirstName/ {print $3}' | sed -r
"s/<\/?FirstName>//g"
Em 10 de outubro de 2017 10:24, Janduy Euclides
Post by Janduy Euclides ***@googlemail.com [shell-script]
Senhores, bom dia.
Eu estou com um probleminha para alterar um arquivo XML, eu tenho hoje
um arquivo chamado PHONEBOOK.XML, hoje eu faço alteraçoes constantes nele,
apenas no campo "FirstName" vou cololocar a estrutura do arquivo abaixo.
Eu estou criando um script para alterar sem precisar entrar mesmo via (vim,
nano etc...)
<Contact> <LastName/> *<FirstName>KowalskiEuclides</FirstName>*
<Phone> <phonenumber>3601</phonenumber> <accountindex>1</accountindex>
<downloaded>0</downloaded> </Phone> </Contact>
Em negrito esta o campo que eu previso alterar, somente o nome.
Eu testei a seguinte linha para consultar esse valor.
# more phonebook.xml | awk '/FirstName/ {print $3}'| grep "Kowalski"
Resultado: <FirstName>KowalskiEuclides</FirstName>
Pergunta: Como eu consigo fazer um exclude dos campos (<FirstName> e
</FirstName> ) e coletar somente o nome?
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified -
CompleteSBC Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
--
Jonathan Lessa
Licenciado em Informática
--
Jonathan Lessa
Licenciado em Informática
Jonathan Lessa jonathanlessa@gmail.com [shell-script]
2017-10-10 19:58:36 UTC
Permalink
me perdi um pouco no seu script nas referências das variáveis "cons" (é
chamada antes da definição de "n1") e "resto" (não identifiquei onde a
"inicializou")

como dica posso sugerir o parâmetro -p do read:

read -p "Nome antigo: " n1
read -p "Nome novo: " n2

assim vc elimina os "echo"



Em 10 de outubro de 2017 11:59, Janduy Euclides
Post by Janduy Euclides ***@googlemail.com [shell-script]
Jonathan, funcionou assim.
#!/bin/bash
arq="phonebook.xml"
cons=$(more $arq | awk '/FirstName/ {print $3}' | sed -r
"s/<\/?FirstName>//g" | grep "$n1")
sleep 2
echo "Nome antigo: "
read n1
sleep 2
echo "Nome novo: "
read n2
sleep 2
echo "aguarde...."
sleep 2
if [ "$n1" != "$resto" ]; then
sed -i "s/$n1/$n2/g" $arq
echo "Phonebook atualizado, Nome:$n2"
else
echo "Nome nao encontrado, tente novamente!"
fi
funcional, acredito que possa melhor mas ja salvou.
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Em 10 de outubro de 2017 11:34, Janduy Euclides <
Post by Janduy Euclides ***@googlemail.com [shell-script]
Entendi, na verdade eu vou fazer o grep so para colocar a variavel que eu
vou coletar.
variave1=janduy (Isso que vou inputar quando o script rodar)
more phonebook.xml | awk '/FirstName/ {print $3}' | awk '{gsub
("</?FirstName>","",$1); print}' | grep "$variavel1"
​Entende?
;-)​
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Post by Jonathan Lessa ***@gmail.com [shell-script]
Com awk achei consegui dessa forma, mas creio que tenha como fazer em
more phonebook.xml | awk '/FirstName/ {print $3}' | awk '{gsub
("</?FirstName>","",$1); print}'
Post by Jonathan Lessa ***@gmail.com [shell-script]
O pessoal deve lhe passar como fazer com awk, mas uma alternativa com o
more phonebook.xml | awk '/FirstName/ {print $3}' | sed -r
"s/<\/?FirstName>//g"
Em 10 de outubro de 2017 10:24, Janduy Euclides
Post by Janduy Euclides ***@googlemail.com [shell-script]
Senhores, bom dia.
Eu estou com um probleminha para alterar um arquivo XML, eu tenho hoje
um arquivo chamado PHONEBOOK.XML, hoje eu faço alteraçoes constantes nele,
apenas no campo "FirstName" vou cololocar a estrutura do arquivo abaixo.
Eu estou criando um script para alterar sem precisar entrar mesmo via (vim,
nano etc...)
<Contact> <LastName/> *<FirstName>KowalskiEuclides</FirstName>*
<Phone> <phonenumber>3601</phonenumber>
<accountindex>1</accountindex> <downloaded>0</downloaded> </Phone>
</Contact>
Em negrito esta o campo que eu previso alterar, somente o nome.
Eu testei a seguinte linha para consultar esse valor.
# more phonebook.xml | awk '/FirstName/ {print $3}'| grep "Kowalski"
Resultado: <FirstName>KowalskiEuclides</FirstName>
Pergunta: Como eu consigo fazer um exclude dos campos (<FirstName> e
</FirstName> ) e coletar somente o nome?
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified -
CompleteSBC Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
--
Jonathan Lessa
Licenciado em Informática
--
Jonathan Lessa
Licenciado em Informática
--
Att.:
Jonathan Lessa
Licenciado em Informática
Janduy Euclides janduyeuclides@googlemail.com [shell-script]
2017-10-11 03:11:47 UTC
Permalink
Oi Jonathan, boa noite.

A variável "cons" faz a consulta do nome dentro do arquivo XML junto com a
variável "n1" essa digitada pelo usuário.

E ai eu comparo se $n1 é igual a resultado da consulta então altera nome,
caso contrário informa que o nome não foi identificado.

Obrigado pela sua dica.

Em 10 de out de 2017 5:58 PM, "Jonathan Lessa ***@gmail.com
[shell-script]" <shell-***@yahoogrupos.com.br> escreveu:



me perdi um pouco no seu script nas referências das variáveis "cons" (é
chamada antes da definição de "n1") e "resto" (não identifiquei onde a
"inicializou")

como dica posso sugerir o parâmetro -p do read:

read -p "Nome antigo: " n1
read -p "Nome novo: " n2

assim vc elimina os "echo"



Em 10 de outubro de 2017 11:59, Janduy Euclides
Post by Janduy Euclides ***@googlemail.com [shell-script]
Jonathan, funcionou assim.
#!/bin/bash
arq="phonebook.xml"
cons=$(more $arq | awk '/FirstName/ {print $3}' | sed -r
"s/<\/?FirstName>//g" | grep "$n1")
sleep 2
echo "Nome antigo: "
read n1
sleep 2
echo "Nome novo: "
read n2
sleep 2
echo "aguarde...."
sleep 2
if [ "$n1" != "$resto" ]; then
sed -i "s/$n1/$n2/g" $arq
echo "Phonebook atualizado, Nome:$n2"
else
echo "Nome nao encontrado, tente novamente!"
fi
funcional, acredito que possa melhor mas ja salvou.
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Em 10 de outubro de 2017 11:34, Janduy Euclides <
Post by Janduy Euclides ***@googlemail.com [shell-script]
Entendi, na verdade eu vou fazer o grep so para colocar a variavel que eu
vou coletar.
variave1=janduy (Isso que vou inputar quando o script rodar)
more phonebook.xml | awk '/FirstName/ {print $3}' | awk '{gsub
("</?FirstName>","",$1); print}' | grep "$variavel1"
​Entende?
;-)​
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Post by Jonathan Lessa ***@gmail.com [shell-script]
Com awk achei consegui dessa forma, mas creio que tenha como fazer em
more phonebook.xml | awk '/FirstName/ {print $3}' | awk '{gsub
("</?FirstName>","",$1); print}'
Post by Jonathan Lessa ***@gmail.com [shell-script]
O pessoal deve lhe passar como fazer com awk, mas uma alternativa com o
more phonebook.xml | awk '/FirstName/ {print $3}' | sed -r
"s/<\/?FirstName>//g"
Em 10 de outubro de 2017 10:24, Janduy Euclides
Post by Janduy Euclides ***@googlemail.com [shell-script]
Senhores, bom dia.
Eu estou com um probleminha para alterar um arquivo XML, eu tenho hoje
um arquivo chamado PHONEBOOK.XML, hoje eu faço alteraçoes constantes nele,
apenas no campo "FirstName" vou cololocar a estrutura do arquivo abaixo.
Eu estou criando um script para alterar sem precisar entrar mesmo via (vim,
nano etc...)
<Contact> <LastName/> *<FirstName>KowalskiEuclides</FirstName>*
<Phone> <phonenumber>3601</phonenumber>
<accountindex>1</accountindex> <downloaded>0</downloaded> </Phone>
</Contact>
Em negrito esta o campo que eu previso alterar, somente o nome.
Eu testei a seguinte linha para consultar esse valor.
# more phonebook.xml | awk '/FirstName/ {print $3}'| grep "Kowalski"
Resultado: <FirstName>KowalskiEuclides</FirstName>
Pergunta: Como eu consigo fazer um exclude dos campos (<FirstName> e
</FirstName> ) e coletar somente o nome?
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified -
CompleteSBC Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
--
Jonathan Lessa
Licenciado em Informática
--
Jonathan Lessa
Licenciado em Informática
--
Att.:
Jonathan Lessa
Licenciado em Informática
Janduy Euclides janduyeuclides@googlemail.com [shell-script]
2017-10-10 14:10:33 UTC
Permalink
Jonathan,

Rolou eu só complementei com o grep para coletar o nome.

Ficou assim:
more phonebook.xml | awk '/FirstName/ {print $3}' | sed -r
"s/<\/?FirstName>//g" | grep "Euclides"
Resultado: KowalskiEuclides

A ideia é que esse valor fique em uma variável para que via "sed" eu faça a
alteração do nome, mas era isso mesmo que eu precisava =)

Obrigado pelo Help.




*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training

*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*

*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Post by Jonathan Lessa ***@gmail.com [shell-script]
O pessoal deve lhe passar como fazer com awk, mas uma alternativa com o
more phonebook.xml | awk '/FirstName/ {print $3}' | sed -r
"s/<\/?FirstName>//g"
Em 10 de outubro de 2017 10:24, Janduy Euclides
Post by Janduy Euclides ***@googlemail.com [shell-script]
Senhores, bom dia.
Eu estou com um probleminha para alterar um arquivo XML, eu tenho hoje um
arquivo chamado PHONEBOOK.XML, hoje eu faço alteraçoes constantes nele,
apenas no campo "FirstName" vou cololocar a estrutura do arquivo abaixo.
Eu estou criando um script para alterar sem precisar entrar mesmo via (vim,
nano etc...)
<Contact> <LastName/> *<FirstName>KowalskiEuclides</FirstName>* <Phone>
<phonenumber>3601</phonenumber> <accountindex>1</accountindex>
<downloaded>0</downloaded> </Phone> </Contact>
Em negrito esta o campo que eu previso alterar, somente o nome.
Eu testei a seguinte linha para consultar esse valor.
# more phonebook.xml | awk '/FirstName/ {print $3}'| grep "Kowalski"
Resultado: <FirstName>KowalskiEuclides</FirstName>
Pergunta: Como eu consigo fazer um exclude dos campos (<FirstName> e
</FirstName> ) e coletar somente o nome?
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
--
Jonathan Lessa
Licenciado em Informática
'Ultimo de Miranda' miranda@prodemge.gov.br [shell-script]
2017-10-10 14:04:32 UTC
Permalink
Estou tentando isolar o FirstName usando sed
Pode disponilizar umas 5 linhas desse arquivo
para poder testar melhor minha solução ?
Post by Janduy Euclides ***@googlemail.com [shell-script]
 >
Senhores, bom dia.
Eu estou com um probleminha para alterar um arquivo XML, eu tenho hoje um arquivo chamado PHONEBOOK.XML, hoje eu faço alteraçoes constantes nele, apenas no campo "FirstName" vou cololocar a estrutura do arquivo abaixo.  Eu estou criando um script para alterar sem precisar entrar mesmo via (vim, nano etc...)
<Contact> <LastName/> > <FirstName>KowalskiEuclides</FirstName>> <Phone> <phonenumber>3601</phonenumber> <accountindex>1</accountindex> <downloaded>0</downloaded> </Phone> </Contact>
Em negrito esta o campo que eu previso alterar, somente o nome.
Eu testei a seguinte linha para consultar esse valor.
# more phonebook.xml | awk '/FirstName/ {print $3}'| grep "Kowalski"
Post by Janduy Euclides ***@googlemail.com [shell-script]
Resultado: <FirstName>KowalskiEuclides</FirstName>
Pergunta:  Como eu consigo fazer um exclude dos campos (<FirstName> e </FirstName> ) e coletar somente o nome?
Atenciosamente,
Post by Janduy Euclides ***@googlemail.com [shell-script]
Digium Certified Asterisk Administrator-> dCAA
Certified > - CompletePBX Basic Technical Training> Certified - CompleteSBC Technical Training> Blog: > Zabbix e Scripting
Post by Janduy Euclides ***@googlemail.com [shell-script]
Portifólio:> Janduy Euclides | Portifolio
Zabbix Comunidade - > Tutoriais
phfbettega@yahoo.com.br [shell-script]
2017-10-10 15:15:50 UTC
Permalink
Com awk pode alterar o separador de campos.
awk -F '<|>' '{print $7}' <<<'<Contact> <LastName/> <FirstName>KowalskiEuclides</FirstName> '
KowalskiEuclides
Post by 'Ultimo de Miranda' ***@prodemge.gov.br [shell-script]
Estou tentando isolar o FirstName usando sed
Pode disponilizar umas 5 linhas desse arquivo
para poder testar melhor minha solução ?
Senhores, bom dia.
Eu estou com um probleminha para alterar um arquivo XML, eu tenho hoje um arquivo chamado PHONEBOOK.XML,
hoje eu faço alteraçoes constantes nele, apenas no campo "FirstName" vou cololocar a estrutura do arquivo
abaixo.  Eu estou criando um script para alterar sem precisar entrar mesmo via (vim, nano etc...)
<Contact> <LastName/> *<FirstName>KowalskiEuclides</FirstName>* <Phone> <phonenumber>3601</phonenumber>
<accountindex>1</accountindex> <downloaded>0</downloaded> </Phone> </Contact>
Em negrito esta o campo que eu previso alterar, somente o nome.
Eu testei a seguinte linha para consultar esse valor.
# more phonebook.xml | awk '/FirstName/ {print $3}'| grep "Kowalski"
Resultado: <FirstName>KowalskiEuclides</FirstName>
Pergunta:  Como eu consigo fazer um exclude dos campos (<FirstName> e </FirstName> ) e coletar somente o
nome?
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical Training
Certified - CompleteSBC Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>
*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>
*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
**
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
itamarnet@yahoo.com.br [shell-script]
2017-10-10 15:35:11 UTC
Permalink
Caro Janduy, Para esse caso tenho duas sugestões:


sed -n '/<FirstName>/{s/.*<FirstName>//;s/<\/FirstName>.*//;p;}'



ou


awk -F "<[/]?FirstName>" '{print $3}'



Espero que ajude


[]'s
Itamar
Janduy Euclides janduyeuclides@googlemail.com [shell-script]
2017-10-10 17:30:21 UTC
Permalink
Opa Itamar, boa tarde.

Ajudou sim e muito, estou estou checando a questao de comparar as variaveis
acho que estou fazendo algo errado. A varivel $n1 nao esta sendo comparada
com $cons.

Ficou assim:

#!/bin/bash
arq="phonebook.xml"
cons=$(more $arq | awk '/FirstName/ {print $3}' | sed -r
"s/<\/?FirstName>//g" | grep "$n1")

echo "ATUALIZAR PHONEBOOK"
sleep 2
echo "Digite o nome antigo do ramal: "
read n1
sleep 2
echo "Digite o novo nome do ramal: "
read n2
sleep 2
echo "aguarde...."
sleep 2
if [ "$n1" != "$cons" ]; then
echo "Nome nao encontrado, tente novamente!"
else
sed -i "s/$n1/$n2/g" $arq
echo "Phonebook atualizado, Nome:$n2"
fi


*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training

*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*

*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Post by ***@yahoo.com.br [shell-script]
Caro Janduy,
sed -n '/<FirstName>/{s/.*<FirstName>//;s/<\/FirstName>.*//;p;}'
ou
awk -F "<[/]?FirstName>" '{print $3}'
Espero que ajude
[]'s
Itamar
itamarnet@yahoo.com.br [shell-script]
2017-10-12 13:28:46 UTC
Permalink
Caro Janduy

Tente debugar esse trecho, vc pode usar o comando "set -x" para mostrar o que está sendo feito e depois desativar esse modo com "set +x" ( e realmente é assim mesmo apesar de parecer invertido ).
Ou se não sentir a vontade com o uso desse comando, coloque "echo $variavel" antes e depois da definição das variáveis para ver o que está acontecendo, e também nas comparações.

É um jeito de tentar descobrir o que está acontecendo efetivamente.

Boa sorte

[]'s
Itamar
Janduy Euclides janduyeuclides@googlemail.com [shell-script]
2017-10-12 14:49:34 UTC
Permalink
Oi Itamar, boa tarde. Perfeito eu vou testar sim e te falo.

Obrigado.
Post by ***@yahoo.com.br [shell-script]
Caro Janduy
Tente debugar esse trecho, vc pode usar o comando "set -x" para mostrar o
que está sendo feito e depois desativar esse modo com "set +x" ( e
realmente é assim mesmo apesar de parecer invertido ).
Ou se não sentir a vontade com o uso desse comando, coloque "echo
$variavel" antes e depois da definição das variáveis para ver o que está
acontecendo, e também nas comparações.
É um jeito de tentar descobrir o que está acontecendo efetivamente.
Boa sorte
[]'s
Itamar
phfbettega@yahoo.com.br [shell-script]
2017-10-12 13:46:42 UTC
Permalink
Olá Janduy, o grep "$n1" não está sobrando? A saida dos pipes até o sed deve retornar o nome
sem precisar do grep depois.
Post by Janduy Euclides ***@googlemail.com [shell-script]
Opa Itamar, boa tarde.
Ajudou sim e muito, estou estou checando a questao de comparar as variaveis acho que estou fazendo algo
errado. A varivel $n1 nao esta sendo comparada com $cons.
#!/bin/bash
arq="phonebook.xml"
cons=$(more $arq | awk '/FirstName/ {print $3}' | sed -r "s/<\/?FirstName>//g" | grep "$n1")
echo "ATUALIZAR PHONEBOOK"
sleep 2
echo "Digite o nome antigo do ramal: "
    read n1
sleep 2
echo "Digite o novo nome do ramal: "
    read n2
sleep 2
echo "aguarde...."
sleep 2
    if [ "$n1" != "$cons" ]; then
    echo "Nome nao encontrado, tente novamente!"
    else
    sed -i "s/$n1/$n2/g" $arq
    echo "Phonebook atualizado, Nome:$n2"
fi
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical Training
Certified - CompleteSBC Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>
*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>
*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
**
__
Caro Janduy,
sed -n '/<FirstName>/{s/.*<FirstName>//;s/<\/FirstName>.*//;p;}'
ou
awk -F "<[/]?FirstName>" '{print $3}'
Espero que ajude
[]'s
Itamar
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
Jonathan Lessa jonathanlessa@gmail.com [shell-script]
2017-10-12 12:56:41 UTC
Permalink
O comando que alimenta a variável cons usa a variável n1, mas nesse momento
ela ainda está vazia, mova a linha em que vc define a variável cons para
depois das leituras das variáveis n1 e n2.



Em 12 de out de 2017 01:34, "Janduy Euclides ***@googlemail.com
[shell-script]" <shell-***@yahoogrupos.com.br> escreveu:



Opa Itamar, boa tarde.

Ajudou sim e muito, estou estou checando a questao de comparar as variaveis
acho que estou fazendo algo errado. A varivel $n1 nao esta sendo comparada
com $cons.

Ficou assim:

#!/bin/bash
arq="phonebook.xml"
cons=$(more $arq | awk '/FirstName/ {print $3}' | sed -r
"s/<\/?FirstName>//g" | grep "$n1")

echo "ATUALIZAR PHONEBOOK"
sleep 2
echo "Digite o nome antigo do ramal: "
read n1
sleep 2
echo "Digite o novo nome do ramal: "

read n2
sleep 2
echo "aguarde...."
sleep 2
if [ "$n1" != "$cons" ]; then
echo "Nome nao encontrado, tente novamente!"
else

sed -i "s/$n1/$n2/g" $arq
echo "Phonebook atualizado, Nome:$n2"
fi


*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training

*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*

*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Post by ***@yahoo.com.br [shell-script]
Caro Janduy,
sed -n '/<FirstName>/{s/.*<FirstName>//;s/<\/FirstName>.*//;p;}'
ou
awk -F "<[/]?FirstName>" '{print $3}'
Espero que ajude
[]'s
Itamar
Janduy Euclides janduyeuclides@googlemail.com [shell-script]
2017-10-13 00:57:26 UTC
Permalink
Opa Jonathan, boa noite.

Amanha eu vou estar na empresa ai eu testo, obrigado pela ajuda.



*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training

*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*

*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Post by Jonathan Lessa ***@gmail.com [shell-script]
O comando que alimenta a variável cons usa a variável n1, mas nesse
momento ela ainda está vazia, mova a linha em que vc define a variável cons
para depois das leituras das variáveis n1 e n2.
Opa Itamar, boa tarde.
Ajudou sim e muito, estou estou checando a questao de comparar as
variaveis acho que estou fazendo algo errado. A varivel $n1 nao esta sendo
comparada com $cons.
#!/bin/bash
arq="phonebook.xml"
cons=$(more $arq | awk '/FirstName/ {print $3}' | sed -r
"s/<\/?FirstName>//g" | grep "$n1")
echo "ATUALIZAR PHONEBOOK"
sleep 2
echo "Digite o nome antigo do ramal: "
read n1
sleep 2
echo "Digite o novo nome do ramal: "
read n2
sleep 2
echo "aguarde...."
sleep 2
if [ "$n1" != "$cons" ]; then
echo "Nome nao encontrado, tente novamente!"
else
sed -i "s/$n1/$n2/g" $arq
echo "Phonebook atualizado, Nome:$n2"
fi
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Post by ***@yahoo.com.br [shell-script]
Caro Janduy,
sed -n '/<FirstName>/{s/.*<FirstName>//;s/<\/FirstName>.*//;p;}'
ou
awk -F "<[/]?FirstName>" '{print $3}'
Espero que ajude
[]'s
Itamar
Janduy Euclides janduyeuclides@googlemail.com [shell-script]
2017-10-13 21:03:04 UTC
Permalink
Senhores, boa noite.

Ficou funcional da seguinte forma.


#!/bin/bash

arq="phonebook.xml"
#cons=$(more $arq | awk -F "<[/]?FirstName>" '/<FirstName>/{print $2}' |
grep "$n1")

echo "ATUALIZAR PHONEBOOK - MANZANOS TECNOLOGIA"
sleep 2
echo "Digite o nome antigo do ramal: "
read n1
sleep 2
echo "Digite o novo nome do ramal: "
read n2
sleep 2
echo "aguarde...."
cons=$(more $arq | awk -F "<[/]?FirstName>" '/<FirstName>/{print $2}' |
grep "$n1")
sleep 2
if [ "$n1" != "$cons" ]; then
echo -e "Nome nao encontrado, tente novamente!\nCertifique que esta
digitando o nome e sobrenome com as iniciais m
aiusculas."
else
sed -i "s/$n1/$n2/g" $arq
echo "Phonebook atualizado, Nome:$n2"
fi

Perfeito, claro que aos poucos vou melhorando!

Desde já agradeço a ajuda de todos.




*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training

*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*

*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*

Em 12 de outubro de 2017 21:57, Janduy Euclides <
Post by Janduy Euclides ***@googlemail.com [shell-script]
Opa Jonathan, boa noite.
Amanha eu vou estar na empresa ai eu testo, obrigado pela ajuda.
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Post by Jonathan Lessa ***@gmail.com [shell-script]
O comando que alimenta a variável cons usa a variável n1, mas nesse
momento ela ainda está vazia, mova a linha em que vc define a variável cons
para depois das leituras das variáveis n1 e n2.
Em 12 de out de 2017 01:34, "Janduy Euclides
Opa Itamar, boa tarde.
Ajudou sim e muito, estou estou checando a questao de comparar as
variaveis acho que estou fazendo algo errado. A varivel $n1 nao esta sendo
comparada com $cons.
#!/bin/bash
arq="phonebook.xml"
cons=$(more $arq | awk '/FirstName/ {print $3}' | sed -r
"s/<\/?FirstName>//g" | grep "$n1")
echo "ATUALIZAR PHONEBOOK"
sleep 2
echo "Digite o nome antigo do ramal: "
read n1
sleep 2
echo "Digite o novo nome do ramal: "
read n2
sleep 2
echo "aguarde...."
sleep 2
if [ "$n1" != "$cons" ]; then
echo "Nome nao encontrado, tente novamente!"
else
sed -i "s/$n1/$n2/g" $arq
echo "Phonebook atualizado, Nome:$n2"
fi
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Post by ***@yahoo.com.br [shell-script]
Caro Janduy,
sed -n '/<FirstName>/{s/.*<FirstName>//;s/<\/FirstName>.*//;p;}'
ou
awk -F "<[/]?FirstName>" '{print $3}'
Espero que ajude
[]'s
Itamar
Janduy Euclides janduyeuclides@googlemail.com [shell-script]
2017-10-13 22:02:48 UTC
Permalink
Estou pensando em usar o "dialog" para melhorar o que acham?

Em 13 de out de 2017 6:03 PM, "Janduy Euclides" <
Post by Janduy Euclides ***@googlemail.com [shell-script]
Senhores, boa noite.
Ficou funcional da seguinte forma.
#!/bin/bash
arq="phonebook.xml"
#cons=$(more $arq | awk -F "<[/]?FirstName>" '/<FirstName>/{print $2}' |
grep "$n1")
echo "ATUALIZAR PHONEBOOK - MANZANOS TECNOLOGIA"
sleep 2
echo "Digite o nome antigo do ramal: "
read n1
sleep 2
echo "Digite o novo nome do ramal: "
read n2
sleep 2
echo "aguarde...."
cons=$(more $arq | awk -F "<[/]?FirstName>" '/<FirstName>/{print $2}' |
grep "$n1")
sleep 2
if [ "$n1" != "$cons" ]; then
echo -e "Nome nao encontrado, tente novamente!\nCertifique que esta
digitando o nome e sobrenome com as iniciais m
aiusculas."
else
sed -i "s/$n1/$n2/g" $arq
echo "Phonebook atualizado, Nome:$n2"
fi
Perfeito, claro que aos poucos vou melhorando!
Desde já agradeço a ajuda de todos.
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Em 12 de outubro de 2017 21:57, Janduy Euclides <
Post by Janduy Euclides ***@googlemail.com [shell-script]
Opa Jonathan, boa noite.
Amanha eu vou estar na empresa ai eu testo, obrigado pela ajuda.
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Post by Jonathan Lessa ***@gmail.com [shell-script]
O comando que alimenta a variável cons usa a variável n1, mas nesse
momento ela ainda está vazia, mova a linha em que vc define a variável cons
para depois das leituras das variáveis n1 e n2.
Em 12 de out de 2017 01:34, "Janduy Euclides
Opa Itamar, boa tarde.
Ajudou sim e muito, estou estou checando a questao de comparar as
variaveis acho que estou fazendo algo errado. A varivel $n1 nao esta sendo
comparada com $cons.
#!/bin/bash
arq="phonebook.xml"
cons=$(more $arq | awk '/FirstName/ {print $3}' | sed -r
"s/<\/?FirstName>//g" | grep "$n1")
echo "ATUALIZAR PHONEBOOK"
sleep 2
echo "Digite o nome antigo do ramal: "
read n1
sleep 2
echo "Digite o novo nome do ramal: "
read n2
sleep 2
echo "aguarde...."
sleep 2
if [ "$n1" != "$cons" ]; then
echo "Nome nao encontrado, tente novamente!"
else
sed -i "s/$n1/$n2/g" $arq
echo "Phonebook atualizado, Nome:$n2"
fi
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Post by ***@yahoo.com.br [shell-script]
Caro Janduy,
sed -n '/<FirstName>/{s/.*<FirstName>//;s/<\/FirstName>.*//;p;}'
ou
awk -F "<[/]?FirstName>" '{print $3}'
Espero que ajude
[]'s
Itamar
Janduy Euclides janduyeuclides@googlemail.com [shell-script]
2017-10-16 12:20:57 UTC
Permalink
Pessoal, bom dia.

Segue a versao final do script, ficou funcional se alguém quiser sugerir
melhoras estou a disposição.

#!/bin/bash
DATA=$(date +%d%m%Y_%Hh%Mmin)
BKP=$(cp phonebook.xml phonebook.xml_$DATA)
N1=$(dialog --stdout --inputbox 'Digite o nome antigo do ramal:' 0 0 2>&1)
N2=$(dialog --stdout --inputbox 'Digite o nome novo do ramal:' 0 0 )
ARQ="phonebook.xml"
CONS=$(more $ARQ | awk -F "<[/]?FirstName>" '/<FirstName>/{print $2}' |
grep "$N1")

if [ "$N1" != "$CONS" ]; then
dialog --msgbox "Nome nao encontrado, tente novamente!\nCertifique que
esta digitando o nome e sobrenome com as iniciais maiusculas.
\n\nPress "ENTER" para sair! " 12 40
else
sed -i "s/$N1/$N2/g" $ARQ
dialog --msgbox "Phonebook atualizado\nNome:$N2 \n\nPress "ENTER"
para sair!" 10 40

echo -e "-----ATUALIZACAO DE PHONEBOOK-------\n" >/tmp/phonebook.txt
echo -e "Nome antigo: $N1" >>/tmp/phonebook.txt
echo -e "Nome Novo: $N2" >>/tmp/phonebook.txt
echo -e "Data da atualizacao:$DATA\n" >>/tmp/phonebook.txt
mail -s 'Atualizacao de Phoneboot' </tmp/phonebook.txt
***@minhaempresa.com.br

Desde ja muito grato pela ajuda de todos.


*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training

*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*

*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*

Em 13 de outubro de 2017 19:02, Janduy Euclides <
Post by Janduy Euclides ***@googlemail.com [shell-script]
Estou pensando em usar o "dialog" para melhorar o que acham?
Em 13 de out de 2017 6:03 PM, "Janduy Euclides" <
Post by Janduy Euclides ***@googlemail.com [shell-script]
Senhores, boa noite.
Ficou funcional da seguinte forma.
#!/bin/bash
arq="phonebook.xml"
#cons=$(more $arq | awk -F "<[/]?FirstName>" '/<FirstName>/{print $2}' |
grep "$n1")
echo "ATUALIZAR PHONEBOOK - MANZANOS TECNOLOGIA"
sleep 2
echo "Digite o nome antigo do ramal: "
read n1
sleep 2
echo "Digite o novo nome do ramal: "
read n2
sleep 2
echo "aguarde...."
cons=$(more $arq | awk -F "<[/]?FirstName>" '/<FirstName>/{print $2}' |
grep "$n1")
sleep 2
if [ "$n1" != "$cons" ]; then
echo -e "Nome nao encontrado, tente novamente!\nCertifique que esta
digitando o nome e sobrenome com as iniciais m
aiusculas."
else
sed -i "s/$n1/$n2/g" $arq
echo "Phonebook atualizado, Nome:$n2"
fi
Perfeito, claro que aos poucos vou melhorando!
Desde já agradeço a ajuda de todos.
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Em 12 de outubro de 2017 21:57, Janduy Euclides <
Post by Janduy Euclides ***@googlemail.com [shell-script]
Opa Jonathan, boa noite.
Amanha eu vou estar na empresa ai eu testo, obrigado pela ajuda.
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Post by Jonathan Lessa ***@gmail.com [shell-script]
O comando que alimenta a variável cons usa a variável n1, mas nesse
momento ela ainda está vazia, mova a linha em que vc define a variável cons
para depois das leituras das variáveis n1 e n2.
Em 12 de out de 2017 01:34, "Janduy Euclides
Opa Itamar, boa tarde.
Ajudou sim e muito, estou estou checando a questao de comparar as
variaveis acho que estou fazendo algo errado. A varivel $n1 nao esta sendo
comparada com $cons.
#!/bin/bash
arq="phonebook.xml"
cons=$(more $arq | awk '/FirstName/ {print $3}' | sed -r
"s/<\/?FirstName>//g" | grep "$n1")
echo "ATUALIZAR PHONEBOOK"
sleep 2
echo "Digite o nome antigo do ramal: "
read n1
sleep 2
echo "Digite o novo nome do ramal: "
read n2
sleep 2
echo "aguarde...."
sleep 2
if [ "$n1" != "$cons" ]; then
echo "Nome nao encontrado, tente novamente!"
else
sed -i "s/$n1/$n2/g" $arq
echo "Phonebook atualizado, Nome:$n2"
fi
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified -
CompleteSBC Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Post by ***@yahoo.com.br [shell-script]
Caro Janduy,
sed -n '/<FirstName>/{s/.*<FirstName>//;s/<\/FirstName>.*//;p;}'
ou
awk -F "<[/]?FirstName>" '{print $3}'
Espero que ajude
[]'s
Itamar
itamarnet@yahoo.com.br [shell-script]
2017-10-10 17:32:31 UTC
Permalink
Caro Janduy, Para esse caso tenho duas sugestões:


sed -n '/<FirstName>/{s/.*<FirstName>//;s/<\/FirstName>.*//;p;}'



ou


awk -F "<[/]?FirstName>" '/<FirstName>/{print $2}'



Espero que ajude


[]'s
Itamar
Janduy Euclides janduyeuclides@googlemail.com [shell-script]
2017-10-10 17:43:42 UTC
Permalink
Eu fiz com e esses ocorre a mesma coisa, acho que o problema deve estar no
meu IF.



*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training

*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*

*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Post by ***@yahoo.com.br [shell-script]
Caro Janduy,
sed -n '/<FirstName>/{s/.*<FirstName>//;s/<\/FirstName>.*//;p;}'
ou
awk -F "<[/]?FirstName>" '/<FirstName>/{print $2}'
Espero que ajude
[]'s
Itamar
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-10-10 15:14:43 UTC
Permalink
Fala Janduy,
em sed com um so cmd:

$ sed -rn 's|.*<FirstName>([[:alnum:]]+)</FirstName>.*|\1|p'

Testando com a linha que vc mandou vem:

$ sed -rn 's|.*<FirstName>([[:alnum:]]+)</FirstName>.*|\1|p' <<< '<Contact>
<LastName/> <FirstName>KowalskiEuclides</FirstName> <Phone>
<phonenumber>3601</phonenumber> <accountindex>1</accountindex>
<downloaded>0</downloaded> </Phone> </Contact>'
KowalskiEuclides

Era isso?

Em Setembro/Outubro darei um treinamento de 40 horas no RJ e em BSB
sobre Programação em Shell, com imersão em Expressões Regulares e
dicas de YAD. Para mais detalhes acesse goo.gl/JkWmBx

Em Dezembro um curso com este mesmo conteúdo/carga horária será
lecionado em SP. Maiores detalhes neste site.
<https://www.4linux.com.br/curso/programacao-em-shell-script>

Abcs,
Julio

*Damos treinamento em sua empresa por **um preço, *
*no mínimo, 50% mais barato que qualquer curso,*
*com certificado e nota fiscal.*

​​
Nosso time de instrutores *in company* é formado somente por
​
​
autores
​ ​
​
de
*Best Sellers​ ​*​laureados ​sobre os temas. P. exemplo:

Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico



Em 10 de outubro de 2017 10:24, Janduy Euclides
Post by Janduy Euclides ***@googlemail.com [shell-script]
Senhores, bom dia.
Eu estou com um probleminha para alterar um arquivo XML, eu tenho hoje um
arquivo chamado PHONEBOOK.XML, hoje eu faço alteraçoes constantes nele,
apenas no campo "FirstName" vou cololocar a estrutura do arquivo abaixo.
Eu estou criando um script para alterar sem precisar entrar mesmo via (vim,
nano etc...)
<Contact> <LastName/> *<FirstName>KowalskiEuclides</FirstName>* <Phone>
<phonenumber>3601</phonenumber> <accountindex>1</accountindex>
<downloaded>0</downloaded> </Phone> </Contact>
Em negrito esta o campo que eu previso alterar, somente o nome.
Eu testei a seguinte linha para consultar esse valor.
# more phonebook.xml | awk '/FirstName/ {print $3}'| grep "Kowalski"
Resultado: <FirstName>KowalskiEuclides</FirstName>
Pergunta: Como eu consigo fazer um exclude dos campos (<FirstName> e
</FirstName> ) e coletar somente o nome?
*Atenciosamente,*
<https://br.linkedin.com/in/janduyeuclides>
Digium Certified Asterisk Administrator-*dCAA*
Certified - CompletePBX Basic Technical TrainingCertified - CompleteSBC
Technical Training
*Blog: Zabbix e Scripting <http://www.juquinha.blog.br/>*
*Portifólio:Janduy Euclides | Portifolio <https://janduy.46graus.com/>*
*Zabbix Comunidade - Tutoriais <http://zabbixbrasil.org/?page_id=7>*
Loading...