shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Comando AWK dentro do arquivo XML


From: Jonathan Lessa
Subject: Re: [shell-script] Comando AWK dentro do arquivo XML
Date: Tue, 10 Oct 2017 16:58:36 -0300

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 address@hidden [shell-script] <address@hidden> escreveu:
 

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,


Digium Certified Asterisk Administrator-dCAA

Certified - CompletePBX Basic Technical Training

Certified - CompleteSBC Technical Training

Zabbix Comunidade - Tutoriais

Em 10 de outubro de 2017 11:34, Janduy Euclides <address@hidden> escreveu:
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,


Digium Certified Asterisk Administrator-dCAA

Certified - CompletePBX Basic Technical Training

Certified - CompleteSBC Technical Training

Zabbix Comunidade - Tutoriais

Em 10 de outubro de 2017 11:12, Jonathan Lessa address@hidden [shell-script] <address@hidden.br> escreveu:
 

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}'

Em 10 de outubro de 2017 10:54, Jonathan Lessa <address@hidden> escreveu:
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 address@hidden [shell-script] <address@hidden.br> escreveu:
 

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,


Digium Certified Asterisk Administrator-dCAA

Certified - CompletePBX Basic Technical Training

Certified - CompleteSBC Technical Training

Zabbix Comunidade - Tutoriais




--
Att.:
Jonathan Lessa
Licenciado em Informática



--
Att.:
Jonathan Lessa
Licenciado em Informática






--
Att.:
Jonathan Lessa
Licenciado em Informática

reply via email to

[Prev in Thread] Current Thread [Next in Thread]