Problemas com o grep

1. Problemas com o grep

Bruno Nocera Zanette
BrunoNZ

(usa Outra)

Enviado em 10/11/2007 - 15:22h

Galera eh o seguinte...
Eu estava fazendo uns scripts como exercicio para minha faculdade e encontrei uma dificuldade..
Qdo eu faço por exemplo o comando abaixo:

cat teste.txt | grep seila > teste.txt

O arquivo teste.txt eh totalmente apagado...

A unica forma q eu axei para fazer isso sem ter q usar um arquivo auxiliar eh usando o comando tee, porem o tee mostra na tela as informações e eu nao quero isso...
Alguem sabe como fazer isso??
Vlwsss


  


2. Re: Problemas com o grep

Jefferson Diego
Diede

(usa Debian)

Enviado em 10/11/2007 - 16:10h

O que você quer, é não apagar o aquivo de saída, certo?

no lugar de:
cat teste.txt | grep seila > teste.txt

use:
cat teste.txt | grep seila >> teste.txt

assim, ele não ira substituir o conteúdo, mas sim adicionar.


3. Re: Problemas com o grep

Bruno Nocera Zanette
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


4. Re: Problemas com o grep

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 11/11/2007 - 01:22h

grep:
grep -qs

tee:
tee arquivo &>/dev/null


5. Re: Problemas com o grep

Bruno Nocera Zanette
BrunoNZ

(usa Outra)

Enviado em 11/11/2007 - 02:00h

AEW!!!
Vlws SMarcell!!
A opçao do grep nao serviu nao...
Mas a opção do tee funcionou certinho!!!
VLws pela ajuda galera!!
Vlwsss






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts