buscar textos que contenham várias strings

Publicado por Geraldo José Ferreira Chagas Júnior 26/09/2008

[ Hits: 7.751 ]

Homepage: http://prginfo.blogspot.com

Download nfgrep




Imgine que você queira buscar todos os arquivos .txt que contenham as strings str1, str2, str3, ..., strn.

É só criar um arquivo com as strings a serem procuradas e usar o script.

É diferente do
# grep --file=arq *.txt

pois este retorna as arquivos desde que tenha uma das strings buscadas. No caso do script, o arquivo tem que ter todas as strings procuradas.

Vi um post com essa dúvida e resolvi postar o script.

  



Esconder código-fonte

#*******************************************
#  Por: Geraldo Jose Ferreira Chagas Junior
#       25/09/2008
#
#*******************************************
#!/bin/sh

# checando os parametros
if [ $# -le 1 ]; then
   echo "Faltando parametro. $0 <a ser lido> <arquivos a ser buscado>"
   exit
fi

l=""
# listando todos os arquivos que entrarao na busca
for i in $@; do
   # o arquivo contendo a lista de string nao entrara na busca
   if [ $i != $1 ]; then
      l="$l $i"
   fi
done

# abrindo o arquivo com as string e pegando cada uma para ser feita a busca
# note que cada string tem que estar em uma linha
for o in $(cat $1); do
   # buscando as string nos arquivos
   for t in $(grep -l $o $l); do
      # apenas os arquivos que tem a string procurada fara parte da proxima busca
      s="$s $t"
   done
   # se $s estiver vazio e pq a busca nao encontrou ocorrencia
   # assim a busca sera encerrada, ja que todas as strings tem que ser
   # encontrada
   if [ -z "$s" ]; then
      exit
   fi
   l=$s
   s=""
done

echo $l

Scripts recomendados

Ordena os números em ordem ascendente!

Iniciando Linux com tudo

Convertendo man pages em PDFs (Versão CShell)

Identificando sinal de rede sem fio em modo texto

Adicionar host ao cbq...


  

Comentários
[1] Comentário enviado por esojep em 27/09/2008 - 08:49h

simplificando:

$ find . -type f -name *.txt | xargs grep -E '(string1|string2|string3)'

o find procura e o xargs construi com a saida gerada pelo find uma lista de arquivos para o grep

[2] Comentário enviado por gjr_rj em 27/09/2008 - 16:59h

Sim, agora, temdo quase 1000 strings ...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts