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

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

Grep retorna mais de um resultado


From: Deivid Vilela
Subject: Grep retorna mais de um resultado
Date: Fri, 12 Jan 2007 11:47:32 -0200
User-agent: Thunderbird 1.5.0.9 (X11/20061206)

Meus cumprimentos a todos

Gostaria de saber se o grupo pode contribuir com uma dificuldade minha.

tenho um arquivo txt com uma listagem de e-mails para cálculo de % de uso de quota.
A estrutura do arquivo é a seguinte

User<tab>quota<tab>maildir

teoricamente para localizar um usuário dentro deste arquivo bastaria um grep bem simples

grep $User base.txt

funciona muito bem até o grep encontrar um usuário com . na string aí ele se perde. para ilustrar a situação segue abaixo as várias opções que eu testei com o grep.

[root@MAITB3213 txt]# grep a.bandeira@dominio  mysql.txt
a.bandeira@dominio  10240 /usr/local/atmail/users/a/other/a.bandeira@dominio
bandeira@dominio    10240   /usr/local/atmail/users/b/a/bandeira@dominio

[root@MAITB3213 txt]# grep 'a.bandeira@dominio'  mysql.txt
a.bandeira@dominio 10240 /usr/local/atmail/users/a/other/a.bandeira@dominio
bandeira@dominio    10240   /usr/local/atmail/users/b/a/bandeira@dominio

[root@MAITB3213 txt]# grep "a.bandeira@dominio"  mysql.txt
a.bandeira@dominio 10240 /usr/local/atmail/users/a/other/a.bandeira@dominio
bandeira@dominio    10240   /usr/local/atmail/users/b/a/bandeira@dominio
[root@MAITB3213 txt]#

SE eu fizer quoting no . usando uma barra ele traz apenas um resultado, a complicação disso é que a conta de e-mail está armazenada em uma variável e eu nunca sei quando existe o ponto ou não.

Próximo passo? tentar awk resultado? idêntico

Para análise segue também o trecho do script que faz este for.


contas=`awk '$1 {print $1}' $mcountpath/mysql.txt`
for conta in $contas
 do
 # Para cada conta extrai o limite de uso identificado no banco de dados

 quota=`grep $conta $mcountpath/mysql.txt |awk '{print $2}'`
 maildir=`grep $conta $mcountpath/mysql.txt |awk '{print $3}'`
done

Usando grep ou awk ou qualquer outra coisa tem como resolver isso?

Obrigado pela atenção de todos
Deivid Vilela

                
_______________________________________________________ Yahoo! Mail - Sempre a melhor opção para você! Experimente já e veja as novidades. http://br.yahoo.com/mailbeta/tudonovo/




reply via email to

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