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

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

Usar teste para, caso verdadeiro, gerar variável e rodar comandos que us


From: Helton Moraes
Subject: Usar teste para, caso verdadeiro, gerar variável e rodar comandos que usam a variável
Date: Mon, 18 Oct 2010 20:06:35 -0200

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

==========================


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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