Journal un script pour améliorer fgrep

Posté par  (site Web personnel) .
Étiquettes : aucune
0
15
nov.
2004
J'avais besoin d'un petit scipt pour faire une fgrep dans une bibliographie.

Le but rechercher un mot clé dans une suite de fichier pouvant être soit des post script, soit des pdf, soit des fichiers textes. Comme je n'ai pas trouvé de commande toute faite, j'ai du réaliser mon propre script. Je ne pense pas qu'il soit parfait mais il remplit son office, il interprete les fichiers pdf et postcript et réalise ensuite la recherche de mot clé.
Je vous le donne, histoire de. Ce script pouvant s'avérer utile dans certain cas précis.


#!/bin/bash

for fichier in *.pdf
do
echo "************************************************************************"
echo $fichier
echo "************************************************************************"
ps2ascii $fichier | grep $1
done

for fichier in *.ps
do
echo "************************************************************************"
echo $fichier
echo "************************************************************************"
ps2ascii $fichier | grep $1
done


Beleys
  • # En une seule passe

    Posté par  . Évalué à 4.

    Comme disait M. Zermati (mon prof de math), on peut factoriser :)

    for fichier in $(ls *.pdf *.ps)
    do
    echo "************************************************************************"
    echo $fichier
    echo "************************************************************************"
    ps2ascii $fichier | grep $1
    done
  • # Cache ?

    Posté par  . Évalué à 3.

    On peut aussi imaginer de garder en cache les sorties des commandes ps2ascii pour ne pas réexécuter la commande à chaque fois alors que le contenu du pdf a peu de chances de changer.
    • [^] # Re: Cache ?

      Posté par  . Évalué à 3.

      Un Makefile pe.

      Du style:

      PDF=$(shell ls *pdf *ps)
      TEXT=$(PDF:=.txt)

      %.txt:%.pdf
      ps2ascii $< $@

      %.txt:%.ps
      ps2ascii $< $@

      all: $(TEXT)

      clean:
      rm -rf *.ps.txt *.pdf.txt

      ca va te génèrer des fichiers cache en NOM.txt
      et les regénèrer que si le fichier change.

      Ton script deviendrait

      #!/bin/sh

      echo blahblah
      make all
      grep $1 *.ps.txt *.pdf.txt


      C'est qu'une proposition et c'est bien sur optimisable :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.