Étonnements rapides et durables

Ahanements d'octets austraux


mercredi 30 octobre 2013

 #mdg2013 Code de traitement informatique

#!/bin/bash
#
# cenitdistricttotext
#
# Script qui convertit les fichiers PDF par région / district de la CENIT
# en un fichier plat plus facilement exploitable
#
# Copyright 2013 Barijaona Ramaholimihaso (http://blog.barijaona.com)
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#  http:#www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#

# référence technique pour les choses les plus mystérieuses : sed one liners http://sed.sourceforge.net/sed1line_fr.html
# et/ou http://www.corporesano.org/doc-site/grepawksed.html

Filename="consolidation.txt"
rm -f $Filename

#
# on part d'un fichier PDF par région
# à récupérer avec un aspirateur de site Web comme SiteSucker
# L'adresse à aspirer est http://www.cenit-madagascar.mg/res/Recap_Region_.php
#

for i in *.pdf
do
    # récupérer dans un fichier temporaire la conversion en texte du PDF
    #
    # pdftotext est une petite partie du package Xpdf http://www.foolabs.com/xpdf/home.html
    # Mac OS X version : http://www.bluem.net/en/mac/packages/ 
    pdftotext -enc UTF-8 -nopgbrk "$i" buffer.txt

    # récupérer les lignes contenant 'Votants', 'obtenues' ou 'Total'
    egrep -e .*Votants.* -e .*obtenues.* -e .*Total.*  buffer.txt |\
    # éliminer les données après tout signe %
    # (c'est les numéros des candidats et autres choses qui prêtent à confusion à cause des sauts de pages)
        sed  's@%.*@%@g' |\
    # fusionner les lignes commencant par un chiffre avec la ligne précédente
    # (ruptures de données provoquées par les sauts de pages)
        sed -e :a -e '$!N;s/\n\([0-9]\)/ \1/;ta' -e 'P;D' |\
    # fusionner les lignes deux à deux
        sed '$!N;s/\n/ /'|\
    # supprimer éventuellement le nom de la région qui reste souvent accroché au premier district
        sed 's@REGION: \(.*\)District:@District:@' |\
    # remplacer l'espace après "District:" et l'espace avant "Inscrits:" par une tabulation
        awk '{ gsub("District.?.", "District:\t") ; print $0 }' |\
        awk '{ gsub(" Inscrits:", "\tInscrits:") ; print $0}' |\
    # mettre en début de ligne le nom de la région et une tabulation
        awk -v region=`basename "$i" pdf` '{printf region; printf "\t" ; print}' >> $Filename

    # TODO : non parfait
    # vous aurez à redistribuer dans Excel ou Open Office la colonne 4 en précisant comme séparateur l'espace
    # puis, à supprimer les colonnes non pertinentes
done
rm buffer.txt
Dernière mise à jour :
30/10/2013 07:57

Commentaires du blog hébergés par Disqus


Billet classé dans la catégorie : Accueil > Macintosh > Mdg2013 Cenitdistricttotext