BrunoNZ
(usa Outra)
Enviado em 10/11/2007 - 21:26h
Nao..
Mas eu nao quero adicionar..
Pq o problema q eu quero fazer eh:
O usuario passa um sobrenome como parametro e o programa deve deletar o nome da lista, e se tiver mais de um perguntar se quer deletar para cada um dos nomes...
Eu ja fiz o script todo...
Soh q aparece os nomes filtrados...
O meu script ficou assim:
#!/bin/bash
#Remova do arquivo de telefones do Laboratório 7 a pessoa cujo sobrenome é passado como argumento do script. Caso não exista pessoa com o sobrenome indicado, o script se encerra com status 1 (um), avisando antes ao usuário. Caso haja mais de uma pessoa com o mesmo sobrenome, o script deve obter do usuário confirmação de remoção para cada pessoa encontrada.
Num_Nomes=`cat telefones.txt | egrep " $1\>" | wc -l`
if [[ $Num_Nomes == 1 ]]
then
# Apenas 1 nome
cat telefones.txt | egrep -v " $1" | tee telefones.txt
elif [[ $Num_Nomes == 0 ]]
then
# Nenhum nome
exit 1
else
# Mais de 1 Nome
# procura os nomes que são iguais e guarda eles em temp
cat telefones.txt | egrep " $1\>" | tr -s "\t" ";" | cut -d";" -f1 > temp;
for x in 1 .. $Num_Nomes
do
# Guarda o "nome da vez" na variavel Nome
Nome=`cat temp | egrep -m 1 " $1\>"`;
# Verifica se o usuario quer deletar ou nao
read -p "Digite Sim para deletar o $Nome: " Conf;
if [[ $Conf == 's' || $Conf == 'S' || $Conf == 'sim' || $Conf == 'SIM' || $Conf == 'Sim' ]]
then
# Esse comando abaixo que aparece o problema, pois o tee alem de guarda no arquivo ele mostra na tela, e isso fica muito feio...
cat telefones.txt | grep -v "$Nome" | tee telefones.txt && cat temp | grep -v "$Nome" | tee telefones.txt
else
# Deleta o nome que o usuário não quis deletar apenas do arquivo temp
cat temp | grep -v "$Nome"` | tee temp
fi
done
rm temp
fi
Bom eh isso ai...
Se alguem souber como se faz o grep sem aparecer na tela ou tiver criticas/sugestões eu aceito!!
Vlwssss