#!/usr/bin/bash #--------------------------------------------------------------------- # MODE D'EMPLOI DU PROGRAMME : # 1. on se place dans le dossier PROJET # 2. puis on lance le programme comme ceci : # bash ./PROGRAMMES/projet.sh ./URLS ./TABLEAUX/tableau.html "motif" (...) # #--------------------------------------------------------------------- # input du programme : le nom du DOSSIER contenant les fichiers d'URLs est donné en premier argument # output du programme : le nom du tableau HTML de sortie est donné en second argument #---------------------------------------------------------------------- # on récupère les arguments du programme et on les stocke dans des variables dossierURL=$1; montableau=$2; motif=$3; #----------------------------------------------------------------------- # Ecriture début du fichier HTML de sortie echo "" > $montableau ; # le compteur des fichiers d'URL et des tableaux associés compteur_tableau=1; # parcours des fichiers d'urls contenus dans le dossiers URLS for fichier in $(ls $dossierURL) do # pour chaque fichier d'url, on va créé un nouveau tableau echo $fichier; echo "" >> $montableau; compteur=1; # compteur d'URL echo "" >> $montableau; echo "" >> $montableau; echo "" >> $montableau; # puis lire ligne à ligne le fichier d'URL while read ligne do # chaque URL lue est traitée et permet de remplir le tableau HTML de sortie echo "-----------------------------------------------------------"; echo "TRAITEMENT DE URL : $ligne"; # s'assurer que la commande curl se passe bien # en créant une variable qui va récupérer la valeur http_code # générée par curl codeHttp=$(curl -o ./PAGES-ASPIREES/"$compteur_tableau-$compteur".html $ligne -w %{http_code}) ; # -------------------------------------------------------------------- # tester la valeur de codeHttp # si c'est 200 super ! # autrement pas super... if [[ $codeHttp == 200 ]] then encodageURL=$(curl -I $ligne | egrep -i "charset=\”?[^\”&,)]+\”?" | cut -f2 -d= | tr [a-z] [A-Z] | tr -d "\r" ); echo "<$encodageURL>"; # test de l'encodage if [[ $encodageURL == "UTF-8" ]] then echo "HTTP OK UTF8 ----------------------------------" echo "<$compteur_tableau><$compteur><$ligne><$codeHttp><$encodageURL>"; #--------------------------------------------------------- # 1er traitement : récupérer le contenu de la page # via la commande lynx : ici on choisit de dumper la page aspirée... lynx -dump -nolist -assume_charset="UTF-8" -display_charset="UTF-8" ./PAGES-ASPIREES/"$compteur_tableau-$compteur".html > ./DUMP-TEXT/utf8_"$compteur_tableau-$compteur".txt; #--------------------------------------------------------- # 2eme traitement : compter les occurrences du motif compteurMotif=$(egrep -o -i $motif ./DUMP-TEXT/utf8_"$compteur_tableau-$compteur".txt | wc -l); #--------------------------------------------------------- # 3ème traitement : extraire des contextes réduits au motif (1 ligne avant et 1 ligne après) # 2 méthodes : egrep + mingrep # 1. construire des morceaux de corpus egrep -C 2 -i "$motif" ./DUMP-TEXT/utf8_"$compteur_tableau-$compteur".txt > ./CONTEXTES/utf8_"$compteur_tableau-$compteur".txt; # 2. donner à voir ces contextes au format HTML perl ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/utf8_"$compteur_tableau-$compteur".txt ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/motif-2020.txt ; # attention il faut "sauvegarder" le résultat mv resultat-extraction.html ./CONTEXTES/"$compteur_tableau-$compteur".html; # #--------------------------------------------------------- # 4ème traitement : index hiérarchique de chaque DUMP (commande déjà vue en cours) egrep -i -o "\w+" ./DUMP-TEXT/utf8_"$compteur_tableau-$compteur".txt | sort | uniq -c | sort -r -n -s -k 1,1 > ./DUMP-TEXT/index_"$compteur_tableau-$compteur".txt ; #--------------------------------------------------------- # 5ème traitement : calcul de bigramme (séquence de 2 mots consécutifs) tr " " "\n" < ./DUMP-TEXT/utf8_"$compteur_tableau-$compteur".txt | tr -s "\n" | egrep -v "^$" > index1.txt ; tail -n +2 index1.txt > index2.txt; paste index1.txt index2.txt | sort | uniq -c | sort -r -n -s -k 1,1 -r > ./DUMP-TEXT/bigramme_"$compteur_tableau-$compteur".txt ; # #--------------------------------------------------------- # ECRITURE DANS LE TABLEAU FINAL : echo "" >> $montableau; #--------------------------------------------------------- else # pour vérifier si l'encodage est dans la liste de la commande iconv reponse=$(iconv -l | egrep -i $encodageURL) if [[ $reponse != "" ]] # pour obtenir le page dump then lynx -dump -nolist -assume_charset=$encodageURL -display_charset=$encodageURL ./PAGES-ASPIREES/"$compteur_tableau-$compteur".html > ./DUMP-TEXT/utf8_"$compteur_tableau-$compteur".txt; # pour convertir en utf-8 iconv -c -f $encodageURL -t UTF-8 ./DUMP-TEXT/$compteur_tableau-$compteur-$encodageURL.txt > ./DUMP-TEXT/$numerotableau-$compteur.txt; compteurMotif=$(egrep -o -i $motif ./DUMP-TEXT/utf8_"$compteur_tableau-$compteur".txt | wc -l); # 3ème traitement : extraire des contextes réduits au motif (1 ligne avant et 1 ligne après) # 2 méthodes : egrep + mingrep # 1. construire des morceaux de corpus egrep -C 2 -i "$motif" ./DUMP-TEXT/utf8_"$compteur_tableau-$compteur".txt > ./CONTEXTES/utf8_"$compteur_tableau-$compteur".txt; # 2. donner à voir ces contextes au format HTML perl ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/utf8_"$compteur_tableau-$compteur".txt ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/motif-2020.txt ; # attention il faut "sauvegarder" le résultat mv resultat-extraction.html ./CONTEXTES/"$compteur_tableau-$compteur".html; # #--------------------------------------------------------- # 4ème traitement : index hiérarchique de chaque DUMP (commande déjà vue en cours) egrep -i -o "\w+" ./DUMP-TEXT/utf8_"$compteur_tableau-$compteur".txt | sort | uniq -c | sort -r -n -s -k 1,1 > ./DUMP-TEXT/index_"$compteur_tableau-$compteur".txt ; #--------------------------------------------------------- # 5ème traitement : calcul de bigramme (séquence de 2 mots consécutifs) tr " " "\n" < ./DUMP-TEXT/utf8_"$compteur_tableau-$compteur".txt | tr -s "\n" | egrep -v "^$" > index1.txt ; tail -n +2 index1.txt > index2.txt; paste index1.txt index2.txt | sort | uniq -c | sort -r -n -s -k 1,1 -r > ./DUMP-TEXT/bigramme_"$compteur_tableau-$compteur".txt ; # ECRITURE DANS LE TABLEAU FINAL : echo "" >> $montableau; #--------------------------------------------------------- else echo "HTTP OK mais encodage pas en UTF8 ----------------------------------" echo "<$compteur_tableau><$compteur><$ligne><$codeHttp><$encodageURL>"; #--------------------------------------------------------- # ECRITURE DANS LE TABLEAU FINAL : echo " <\tr>" >> $montableau; #--------------------------------------------------------- fi fi else #--------------------------------------------------------- # ECRITURE DANS LE TABLEAU FINAL : echo "PB HTTP ----------------------------------" echo "<$compteur_tableau><$compteur><$ligne><$codeHttp>"; echo "" >> $montableau; fi ; #--------------------------------------------------------------------- compteur=$((compteur + 1)); # on incrémente le compteur d'URLs done < $dossierURL/$fichier # ATTENTION AU CHEMIN pour le fichier d'URL echo "
TABLEAU $compteur_tableau
MOTIF : $motif
CPT HTTP Encodage URL P.A DUMP CPT MOTIF Contextes txt Contextes html Index bigrammes
$compteur $codeHttp $encodageURL $ligne P.A n°$compteur DUMP n°$compteur $compteurMotif contexte $compteur contexte $compteur index $compteur bigramme $compteur
$compteur $codeHttp $encodageURL $ligne P.A n°$compteur DUMP n°$compteur $compteurMotif contexte $compteur contexte $compteur index $compteur bigramme $compteur
$compteur $codeHttp $encodageURL $ligne P.A n°$compteur ?? ?? ?? ?? ?? ??
$compteur$codeHttp-$ligne-------
" >> $montableau; echo "


" >> $montableau; compteur_tableau=$((compteur_tableau + 1)); # on incrémente le compteur de tableau done # Fin des traitements, on finit la sortie HTML echo "" >> $montableau;