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

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

Re: [shell-script] Usar teste para, caso verdadeiro, gerar variável e ro


From: jimmy
Subject: Re: [shell-script] Usar teste para, caso verdadeiro, gerar variável e rodar comandos que usam a variável
Date: Mon, 18 Oct 2010 22:07:32 -0200
User-agent: Mutt/1.4.2.3i

On Mon, Oct 18, 2010 at 08:06:35PM -0200, Helton Moraes wrote:
> 
> 
> Caros colegas
> 
> Hoje criei um programinha pra facilitar minha vida de
> procurador-de-coisas-em-um-monte-de-pdf. O programa procura recursivamente
> todos os pdfs e dá uma saída formatada, usando o comando pdftotext do pacote
> xpdf-utils.
> 
> Invocação(exemplo): $ grepdf empowerment
> 
> # 2009.pdf:
> ==========
> Empowerment. University of California Press, Berkeley.8.
> 
> # Medicalisation of Disability.pdf:
> ==================================
> political empowerment of disabled people as a group and not through
> 
> # Wheelchairs - from engineering to inclusive design - Include 2005.pdf:
> =======================================================================
> Personas, narratives and empowerment: the inclusive design of `away from
> Empowerment games: participatory design exercises for sustainable public
> Personas, narratives and empowerment: the inclusive design
> Empowerment games: participatory design exercises for sustainable
> Design process, Empowerment Games, designed through collaboration between
> 
> Não consegui enxugar alguns pontos, apesar de ter dado uma lida nos meus
> amansa-burros:
> 
> 1. Como evitar ter de escrever e ler o arquivo 'saida'?
> 2. Como aproveitar a passada // pdftotext -q -raw -nopgbrk "$arquivo" -
> | grep -i "$1" // para, SOMENTE SE POSITIVA (exit status do grep = 0),
> criar a variável $busca e rodar os outros comandos?
> 3. Alguma sugestão para o 'sublinhado-com-um-monte-de-sinais-de-igual'
> que não seja usando laço?
> 4. Teria como fazer os termos de busca ficarem coloridos, como
> aconteceria no grep 'limpo'?
> 5. Será que o pdftotext é o melhor programa para fazer isso? Haveria
> algum modo nativo para melhorar a portabilidade?
> 
> Não que o comando não esteja funcionando satisfatoriamente (bem mais rápido
> do que o mecanismo equivalente do Adobe Acrobat, na verdade), mas tenho
> visto que a comunidade Shell Script valoriza a "elegância" e a eficiência da
> coisa, e como estou aprendendo, não haveria oportunidade melhor para
> aprender direito do que incorporar boas práticas. Também fiquei satisfeito
> com o fato de o código ter ficado suficientemente legível.
> 
> Obrigado pela ajuda, espero que, independente de mais nada, o script possa
> ser útil para mais gente.
> 
> Helton
> 
> ==========================
> #!/bin/bash
> 
> echo ""
> find -type f -name '*.pdf' -print > saida
> while read arquivo
> do
> busca=$(pdftotext -q -raw -nopgbrk "$arquivo" - | grep -i "$1")
> if [ "$busca" ]
> then
> nome=$(echo "$arquivo" | sed -r 's:.*/([^/]*)$:\1:g')
> count=$(echo "$nome" | wc -c)
> linha=$(for n in $(seq 0 "$count"); do echo -n "="; done; echo -e
> "\n")
> echo -e "# $nome:\n$linha\n$busca\n\n"
> fi
> done < saida
> 
> ==========================

Para procurar eu simplesmente faço o seguinte:

find ~/ -name \*.pdf -exec sh -c 'pdftotext -eol unix -enc Latin1 -layout 
-nopgbrk {} - 2>/dev/null | grep -H -n --label={} string' {} \; | less

monto na  hora mesmo  na linha  de comando, quando  esqueço de  algum de
parâmetro recorro ao manual. Sigo a  mesma ideia para outros formatos de
arquivo que não são texto.

OT.:
Faz tempo que procuro strings em  arquivos PDF com o pdftotext, e também
já faz tempo  que ele deixou de  fazer parte do projeto xpdf  e passou a
ser parte do projeto poppler:

http://poppler.freedesktop.org/

mas não sei se no seu caso é apenas nomenclatura de empacotamento.

Outras coisas  a considerar: o pdftotext  faz muito mais do  que somente
extrair  as  strings  do  pdf,   ele  consegue  renderizar  e  descobrir
caracteres que seriam apenas representações gráficas, mas a renderização
não é  perfeita, também  não funciona  para todo  tipo de  arquivos pdf,
ainda assim ele é  muito útil para automação e para  facilitar a vida de
leitores  de  tela.  Reduzir  o  escopo  do  problema  a  somente  texto
facilita/possibilita automações simples.

-- 
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------


reply via email to

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