Trocar uma linha inteira à escolha do usuário [RESOLVIDO]

1. Trocar uma linha inteira à escolha do usuário [RESOLVIDO]

Matheus Genteluci de Almeida
MGenteluci2

(usa Ubuntu)

Enviado em 17/11/2016 - 14:15h

Boa tarde galera, to com um problema aqui que está realmente dificil de resolver, estou criando uma agenda telefonica e agora preciso criar uma opcao de atualizar o contato.
Esse é meu codigo ate agora

atualizar(){
cat -n arquivoAgenda
echo "Qual contato voce deseja atualizar?"
read l
echo "Digite o nome:"
read nome
echo "Digite o sobrenome:"
read sobrenome
echo "Digite o email:"
read email
echo "Digite o telefone:"
read tel
}

Porem vamos dizer que o usuario digitou o nome, sobrenome, email e o telefone errados, e agora ele precisa refazer isso, como eu faria pra substituir a linha que está errada por uma nova? eu tentei usar o sed -i 's/'$l'.*/echo $nome":"$sobrenome":"$email":"$tel/' arquivoAgenda mas nao está funcionando, no caso eu quero substituir a linha que o usuário digitar, como podem ver eu peço à ele qual linha deve ser trocada e salvo na variavel $l, mas não está dando certo, alguma dica?


  


2. Re: Trocar uma linha inteira à escolha do usuário [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 17/11/2016 - 21:24h

MGenteluci2 escreveu:

Boa tarde galera, to com um problema aqui que está realmente dificil de resolver, estou criando uma agenda telefonica e agora preciso criar uma opcao de atualizar o contato.
Esse é meu codigo ate agora

atualizar(){
cat -n arquivoAgenda
echo "Qual contato voce deseja atualizar?"
read l
echo "Digite o nome:"
read nome
echo "Digite o sobrenome:"
read sobrenome
echo "Digite o email:"
read email
echo "Digite o telefone:"
read tel
}

Porem vamos dizer que o usuario digitou o nome, sobrenome, email e o telefone errados, e agora ele precisa refazer isso, como eu faria pra substituir a linha que está errada por uma nova? eu tentei usar o sed -i 's/'$l'.*/echo $nome":"$sobrenome":"$email":"$tel/' arquivoAgenda mas nao está funcionando, no caso eu quero substituir a linha que o usuário digitar, como podem ver eu peço à ele qual linha deve ser trocada e salvo na variavel $l, mas não está dando certo, alguma dica?


Boa noite MGenteluci2.
Verifique se funciona:
sed -i 's/^'$l'.*$/'$nome':'$sobrenome':'$email':'$tel/'' arquivoAgenda
OBS.: Depois de '$tel/ são DUAS ASPAS SIMPLES
Att.:
Marcelo Oliver


3. Re: Trocar uma linha inteira à escolha do usuário

Matheus Genteluci de Almeida
MGenteluci2

(usa Ubuntu)

Enviado em 17/11/2016 - 22:46h

Funcionou não, eu consegui resolver aqui, eu fiz o seguinte:
//Dei um echo das informações lá na agenda
echo $nome":"$sobrenome":"$email":"$tel >> arquivoAgenda
//Apaguei a linha antiga do arquivo
sed -i -e ''$l'd' arquivoAgenda

Não ficou certinho porque a nova linha irá pro final do arquivo ao invés de ocupar o lugar da antiga, mas tudo bem, vai ser o suficiente por enquanto.








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts