[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Verificar se TODAS as palavras existem no texto
From: |
mop |
Subject: |
Re: Verificar se TODAS as palavras existem no texto |
Date: |
Fri, 02 May 2008 10:34:28 -0300 |
Acredito que esta não seja sua solução.
Deverão aparecer outras mais apropriadas.
Mas para ir brincando, eis uma abordagem muito questionável... :)
A função:
gb(){
W=$*
W=^${W// /$|^}$
[ `tr ' ,.' '\n'|grep -E "$W"|sort -u|wc -l` -eq $# ]
}
O arquivo de teste:
-rw-r--r-- 1 xio xio 2388632 2008-05-02 10:05 twm.log
O resultado:
$ time cat twm.log|gb 12 13 F12;echo \$?=$?
real 0m0.081s
user 0m0.032s
sys 0m0.020s
$?=0
$ time cat twm.log|gb 12 13 F12 NAO;echo \$?=$?
real 0m0.070s
user 0m0.052s
sys 0m0.020s
$?=1
$
Optei pela coleta em stdin, mas tudo pode ser facilmente alterado.
Não sei se funcionaria em 100% dos casos e nem se deixei escapar algo.
------------------------------------------
>From: address@hidden
>
>Gostaria de saber como utilizar o grep para saber se um texto qualquer
>possui *todas* os argumentos pesquisados. Vou dar um exemplo para ser
>mais claro.
>Vamos supor que quero saber quais arquivos possuem as palavras maça,
>uva e banana.
>Se eu der um grep "(maça|uva|banana)" vou obter as linhas que casam
>com *qualquer* um dos parametros, mas o que eu desejo saber é se o
>arquivo possui as 3 palavras ou não.
>Pensei em fazer vários grep's isolados, mas será que existe alguma
>forma mais compacta???