Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Enlightenment
Por in54no
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Geraldo José Ferreira Chagas Júnior em 26/09/2008    [ 3727 hits ]

Login: gjr_rj, 457221 pontos

Homepage: http://prginfo.blogspot.com   


Descrição

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.

[ Download: nfgrep ]   [ Enviar nova versão ]

[ 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
   Script Linux recomendado Gravando 4 CDs ao mesmo tempo
   Script Linux recomendado Diferença entre colunas
   Script Linux recomendado Script para Backup Banco Firebird
   Script Linux recomendado Script Simples para informações do Sistema
   Script Linux recomendado Configurando e conectando Speedy

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


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.