#!/usr/bin/bash # MODE D'EMPLOI DU PROGRAMME : # bash programme_tableau.sh NOM_DOSSIER_URL NOM_FICHIER_HTML # le programme prend 3 arguments : # - le premier est le nom du dossier contenant les fichiers d'URLs, i.e l'INPUT : $1 par la suite # - le second est le fichier TABLEAU au format HTML : $2 par la suite # - le troisième est le motif dans les langues différentes choisies $3 # les 3 sont fournis dans la ligne de commande via un chemin relatif #------------------------------------------------------------------------------- # Phase 1 : ECRITURE ENTETE FICHIER HTML echo "" > $2 ; echo "TABLEAUX URL " >> $2 ; echo "" >> $2 ; #------------------------------------------------------------------------------- compteurtableau=1; # Phase 2 : traitement de chacun fichier d'URLs for fichier in $(ls $1) do echo "" >> $2 ; echo "" >> $2 ; # Phase 3 : traitement de chaque ligne du fichier d'URL en cours # ==> ECRITURE d'une ligne dans le tableau HTML compteur=1; for ligne in $(cat $1/$fichier) do code_sortie=$(curl -s -L -o tmp.txt -w "%{http_code}" $ligne | tail -1) ; # code_sortie contient le code retour de la connexion HTTP if [[ $code_sortie == 200 ]] then # URL OK # recherche de l'encodage du l'URL en cours ENCODAGE=$(curl -sIL "$ligne" | egrep -i "charset" | cut -f2 -d"=" | tr "[a-z]" "[A-Z]" | tr -d "\n" | tr -d "\r") ; echo -e "$compteurtableau::$compteur::$code_sortie::$ENCODAGE::$ligne\n"; if [[ $ENCODAGE == "UTF-8" ]] then echo -e "ENCODAGE initial <$ENCODAGE> OK : on passe au traitement \n"; # aspiration de l'URL curl -sL -o ./PAGES-ASPIREES/$compteurtableau-$compteur.html $ligne ; # dump de l'URL lynx -dump -nolist $ligne > ./DUMP-TEXT/$compteurtableau-$compteur.txt ; #--------------------------------------------------------------------------- # 1. contexte egrep -i "$3" ./DUMP-TEXT/$compteurtableau-$compteur.txt > ./CONTEXTES/$compteurtableau-$compteur.txt; # 2. Fq motif nbmotif=$(egrep -coi "$3" ./DUMP-TEXT/$compteurtableau-$compteur.txt); # 3. contexte html perl ./minigrepmultilingue-v2/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/$compteurtableau-$compteur.txt ./minigrepmultilingue-v2/motif-regexp.txt ; mv resultat-extraction.html ./CONTEXTES/$compteurtableau-$compteur.html ; # 4. index hierarchique egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/index-$compteurtableau-$compteur.txt ; # 5. bigramme egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur.txt > ./BIGRAMME/bi1.txt; tail -n +2 ./BIGRAMME/bi1.txt > ./BIGRAMME/bi2.txt ; paste ./BIGRAMME/bi1.txt ./BIGRAMME/bi2.txt > ./BIGRAMME/bi3.txt ; cat ./BIGRAMME/bi3.txt | sort | uniq -c | sort -r > ./BIGRAMME/bigramme-$compteurtableau-$compteur.txt ; #--------------------------------------------------------------------------- echo "" >> $2 ; else echo -e "==> il faut traiter les URLs OK qui ne sont pas a priori en UTF8\n" ; echo -e "ENCODAGE initial : <$ENCODAGE> \n"; if [[ $ENCODAGE == "" ]] then # On cherche l'encodage de la page en appliquant la commande file sur la page aspirée (++++++) curl -sL -o ./PAGES-ASPIREES/$compteurtableau-$compteur.html $ligne ; ENCODAGEEGREP=$(egrep "]+" | cut -f2 -d"=" | egrep -o "(\w|-)+" | uniq | tr "[a-z]" "[A-Z]"); echo -e "ENCODAGE initial vide. ENCODAGE extrait via egrep : $ENCODAGEEGREP \n"; echo -e "Il faut désormais s'assurer que cet encodage peut être OK ou pas... \n"; # LA SUITE : est-ce que ENCODAGEFILE vaut UTF8 ou non ??? à vous de jouer... if [[ $ENCODAGEEGREP == 'UTF-8' ]] then echo -e "ENCODAGEEGREP <$ENCODAGEEGREP> OK : on passe au traitement \n"; # aspiration de l'URL curl -sL -o ./PAGES-ASPIREES/$compteurtableau-$compteur.html $ligne ; # dump de l'URL lynx -dump -nolist $ligne > ./DUMP-TEXT/$compteurtableau-$compteur.txt ; # 1. contexte egrep -i "$3" ./DUMP-TEXT/$compteurtableau-$compteur.txt > ./CONTEXTES/$compteurtableau-$compteur.txt; # 2. Fq motif nbmotif=$(egrep -coi "$3" ./DUMP-TEXT/$compteurtableau-$compteur.txt); # 3. contexte html perl ./minigrepmultilingue-v2/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/$compteurtableau-$compteur.txt ./minigrepmultilingue-v2/motif-regexp.txt ; mv resultat-extraction.html ./CONTEXTES/$compteurtableau-$compteur.html ; # 4. index hierarchique egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/index-$compteurtableau-$compteur.txt ; # 5. bigramme egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur.txt > ./BIGRAMME/bi1.txt; tail -n +2 ./BIGRAMME/bi1.txt > ./BIGRAMME/bi2.txt ; paste ./BIGRAMME/bi1.txt ./BIGRAMME/bi2.txt > ./BIGRAMME/bi3.txt ; cat ./BIGRAMME/bi3.txt | sort | uniq -c | sort -r > ./BIGRAMME/bigramme-$compteurtableau-$compteur.txt ; #--------------------------------------------------------------------------- echo "" >> $2 ; else reponse=$(iconv -l | egrep "$ENCODAGEEGREP") ; if [[ $reponse != "" ]] then echo -e "ENCODAGE egrep <$ENCODAGEEGREP> OK, connu de iconv : on passe au traitement \n"; curl -sL -o ./PAGES-ASPIREES/$compteurtableau-$compteur.html $ligne ; # dump de l'URL lynx --assume-charset="$ENCODAGEEGREP" --display-charset="$ENCODAGEEGREP" -dump -nolist $ligne > ./DUMP-TEXT/$compteurtableau-$compteur.txt ; iconv -f $ENCODAGEEGREP -t utf-8 ./DUMP-TEXT/$compteurtableau-$compteur.txt > ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt ; # 1. contexte egrep -i "$3" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt > ./CONTEXTES/$compteurtableau-$compteur.txt; # 2. Fq motif nbmotif=$(egrep -coi "$3" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt); # 3. contexte html perl ./minigrepmultilingue-v2/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt ./minigrepmultilingue-v2/motif-regexp.txt ; mv resultat-extraction.html ./CONTEXTES/$compteurtableau-$compteur.html ; # 4. index hierarchique egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/index-$compteurtableau-$compteur.txt ; # 5. bigramme egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt > ./BIGRAMME/bi1.txt; tail -n +2 ./BIGRAMME/bi1.txt > ./BIGRAMME/bi2.txt ; paste ./BIGRAMME/bi1.txt ./BIGRAMME/bi2.txt > ./BIGRAMME/bi3.txt ; cat ./BIGRAMME/bi3.txt | sort | uniq -c | sort -r > ./BIGRAMME/bigramme-$compteurtableau-$compteur.txt ; #--------------------------------------------------------------------------- echo "" >> $2 ; else echo -e "La commende file ne marche pas...\n"; fi fi else #ici curl a renvoyé un truc non vide, mais c'est pas UTF8 reponse=$(iconv -l | egrep "$ENCODAGE") ; if [[ $reponse != "" ]] then echo -e "ENCODAGE initial <$ENCODAGE> OK, connu de iconv : on passe au traitement \n"; curl -sL -o ./PAGES-ASPIREES/$compteurtableau-$compteur.html $ligne ; # dump de l'URL lynx --assume-charset="$ENCODAGE" --display-charset="$ENCODAGE" -dump -nolist $ligne > ./DUMP-TEXT/$compteurtableau-$compteur.txt ; iconv -f $ENCODAGE -t utf-8 ./DUMP-TEXT/$compteurtableau-$compteur.txt > ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt ; # 1. contexte egrep -i "$3" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt > ./CONTEXTES/$compteurtableau-$compteur.txt; # 2. Fq motif nbmotif=$(egrep -coi "$3" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt); # 3. contexte html perl ./minigrepmultilingue-v2/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt ./minigrepmultilingue-v2/motif-regexp.txt ; mv resultat-extraction.html ./CONTEXTES/$compteurtableau-$compteur.html ; # 4. index hierarchique egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/index-$compteurtableau-$compteur.txt ; # 5. bigramme egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt > ./BIGRAMME/bi1.txt; tail -n +2 ./BIGRAMME/bi1.txt > ./BIGRAMME/bi2.txt ; paste ./BIGRAMME/bi1.txt ./BIGRAMME/bi2.txt > ./BIGRAMME/bi3.txt ; cat ./BIGRAMME/bi3.txt | sort | uniq -c | sort -r > ./BIGRAMME/bigramme-$compteurtableau-$compteur.txt ; echo "" >> $2 ; else echo -e "L'encodage initial n'est pas un encodage pertinent, il faut essayer autre chose...\n"; # On cherche l'encodage de la page en appliquant la commande file sur la page aspirée (++++++) curl -sL -o ./PAGES-ASPIREES/$compteurtableau-$compteur.html $ligne ; ENCODAGEEGREP=$(egrep "]+" | cut -f2 -d"=" | egrep -o "(\w|-)+" | uniq | tr "[a-z]" "[A-Z]"); echo -e "ENCODAGE initial non pertinent. ENCODAGE extrait via egrep : $ENCODAGEEGREP \n"; echo -e "Il faut désormais s'assurer que cet encodage peut être OK ou pas... \n"; if [[ $ENCODAGEEGREP == 'UTF-8' ]] then echo -e "ENCODAGEEGREP <$ENCODAGEEGREP> OK : on passe au traitement \n"; # aspiration de l'URL curl -sL -o ./PAGES-ASPIREES/$compteurtableau-$compteur.html $ligne ; # dump de l'URL lynx -dump -nolist $ligne > ./DUMP-TEXT/$compteurtableau-$compteur.txt ; # 1. contexte egrep -i "$3" ./DUMP-TEXT/$compteurtableau-$compteur.txt > ./CONTEXTES/$compteurtableau-$compteur.txt; # 2. Fq motif nbmotif=$(egrep -coi "$3" ./DUMP-TEXT/$compteurtableau-$compteur.txt); # 3. contexte html perl ./minigrepmultilingue-v2/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/$compteurtableau-$compteur.txt ./minigrepmultilingue-v2/motif-regexp.txt ; mv resultat-extraction.html ./CONTEXTES/$compteurtableau-$compteur.html ; # 4. index hierarchique egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/index-$compteurtableau-$compteur.txt ; # 5. bigramme egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur.txt > ./BIGRAMME/bi1.txt; tail -n +2 ./BIGRAMME/bi1.txt > ./BIGRAMME/bi2.txt ; paste ./BIGRAMME/bi1.txt ./BIGRAMME/bi2.txt > ./BIGRAMME/bi3.txt ; cat ./BIGRAMME/bi3.txt | sort | uniq -c | sort -r > ./BIGRAMME/bigramme-$compteurtableau-$compteur.txt ; #--------------------------------------------------------------------------- echo "" >> $2 ; else reponse=$(iconv -l | egrep "$ENCODAGEEGREP") ; if [[ $reponse != "" ]] then echo -e "ENCODAGE egrep <$ENCODAGEEGREP> OK, connu de iconv : on passe au traitement \n"; curl -sL -o ./PAGES-ASPIREES/$compteurtableau-$compteur.html $ligne ; # dump de l'URL lynx --assume-charset="$ENCODAGEEGREP" --display-charset="$ENCODAGEEGREP" -dump -nolist $ligne > ./DUMP-TEXT/$compteurtableau-$compteur.txt ; iconv -f $ENCODAGEEGREP -t utf-8 ./DUMP-TEXT/$compteurtableau-$compteur.txt > ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt ; # 1. contexte egrep -i "$3" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt > ./CONTEXTES/$compteurtableau-$compteur.txt; # 2. Fq motif nbmotif=$(egrep -coi "$3" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt); # 3. contexte html perl ./minigrepmultilingue-v2/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt ./minigrepmultilingue-v2/motif-regexp.txt ; mv resultat-extraction.html ./CONTEXTES/$compteurtableau-$compteur.html ; # 4. index hierarchique egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/index-$compteurtableau-$compteur.txt ; # 5. bigramme egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt > ./BIGRAMME/bi1.txt; tail -n +2 ./BIGRAMME/bi1.txt > ./BIGRAMME/bi2.txt ; paste ./BIGRAMME/bi1.txt ./BIGRAMME/bi2.txt > ./BIGRAMME/bi3.txt ; cat ./BIGRAMME/bi3.txt | sort | uniq -c | sort -r > ./BIGRAMME/bigramme-$compteurtableau-$compteur.txt ; #--------------------------------------------------------------------------- echo "" >> $2 ; else echo -e "L'encodage n'est pas un encodage pertinent, désolé...\n"; fi fi fi fi fi else # URL "pourrie", pb connexion http, on écrit quasiment rien dans la ligne du tableau !!!! echo -e "PB....$compteurtableau::$compteur::$code_sortie::::$ligne\n"; echo "" >> $2 ; fi compteur=$((compteur + 1)); echo -e "_____________________________________________________________________\n"; done; echo "
CodeHttp URL Page Aspirée Encodage INITIAL Encodage FINAL Dump Contexte Contexte HTML Fq Motif Index Bigramme
$compteur $code_sortie $ligne page aspirée n° $compteur $ENCODAGE\Charset UTF-8 DUMP n° $compteur CT $compteurtableau-$compteur CTh $compteurtableau-$compteur $nbmotif Ind $compteurtableau-$compteur Bigr $compteurtableau-$compteur
$compteur $code_sortie $ligne page aspirée n° $compteur $ENCODAGEEGREP\EGREP UTF-8 DUMP n° $compteur CT $compteurtableau-$compteur CTh $compteurtableau-$compteur $nbmotif Ind $compteurtableau-$compteur Bigr $compteurtableau-$compteur
$compteur $code_sortie $ligne page aspirée n° $compteur $ENCODAGEEGREP\EGREP UTF-8 DUMP n° $compteur CT $compteurtableau-$compteur CTh $compteurtableau-$compteur $nbmotif Ind $compteurtableau-$compteur Bigr $compteurtableau-$compteur
$compteur $code_sortie $ligne page aspirée n° $compteur $ENCODAGE\Charset UTF-8 DUMP n° $compteur CT $compteurtableau-$compteur CTh $compteurtableau-$compteur $nbmotif Ind $compteurtableau-$compteur Bigr $compteurtableau-$compteur
$compteur $code_sortie $ligne page aspirée n° $compteur $ENCODAGEEGREP\EGREP UTF-8 DUMP n° $compteur CT $compteurtableau-$compteur CTh $compteurtableau-$compteur $nbmotif Ind $compteurtableau-$compteur Bigr $compteurtableau-$compteur
$compteur $code_sortie $ligne page aspirée n° $compteur $ENCODAGEEGREP\EGREP UTF-8 DUMP n° $compteur CT $compteurtableau-$compteur CTh $compteurtableau-$compteur $nbmotif Ind $compteurtableau-$compteur Bigr $compteurtableau-$compteur
$compteur$code_sortie$ligne--------
" >> $2 ; echo "
" >> $2 ; compteurtableau=$((compteurtableau + 1)); done; #------------------------------------------------------------------------------- # Phase 4 : ECRITURE FIN DE FICHIER HTML echo "" >> $2 ; echo "" >> $2 ; #------------------------------------------------------------------------------- # c'est fini exit;