#!/bin/bash #bash prem_projet.sh #stocker les arguments dans des variables DOSSIER_URLS=$1 DOSSIER_TABLEAUX=$2 #valider les arguments #valider les arguments if [[ $# -eq 2 ]] then echo "Le nombre d'arguments est correcte" else echo "Le nombre d'arguments est incorrecte" exit fi echo $DOSSIER_URLS echo $DOSSIER_TABLEAUX #-----------------------------FONCTIONS--------------------------------- #Fonction 1 : css html_entete() { echo "" > $DOSSIER_TABLEAUX/table.html; } #Fonction 2 : Variables mot et tableau variable_mot_table(){ #variable utilisée pour compter les mots if [[ $fichier == "jp_famille_kazoku.txt" || $fichier == "ch_urls_jiazu.txt" ]] then MOT="家族" elif [[ $fichier == "jp_famille_katei.txt" || $fichier == "ch_urls_jiating.txt" ]] then MOT="家庭" else MOT="(F|f)amília(s?)" fi #variable pour créer un tableau par langue if [[ $fichier == "jp_famille_kazoku.txt" || $fichier == "jp_famille_katei.txt" ]] then table=jp-table.html elif [[ $fichier == "ch_urls_jiazu.txt" || $fichier == "ch_urls_jiating.txt" ]] then table=ch-table.html else table=pt-table.html fi } #Fonction 3 : traitement utf8 #récupération en texte brut, indexation, bigramme, motif, contexte traitement_utf8() { #récupération en texte brut texte=$(lynx -assume_charset=UTF-8 -dump -nolist ./PAGES-ASPIREES/"$cptTableau-$compteur".html) echo "$texte" > ./DUMP-TEXT/"$cptTableau-$compteur".txt if [[ $fichier == "ch_urls_jiating.txt" || $fichier == "ch_urls_jiazu.txt" ]] then #segmentation du chinois avec jieba python ./PROGRAMMES/chinois-cr.py ./DUMP-TEXT/"$cptTableau-$compteur".txt ./DUMP-TEXT/colonne.txt #index hierarchique echo "----INDEX----" grep -o -P "[\p{Han}\p{L}]+" ./DUMP-TEXT/colonne.txt | sort | uniq -c | sort -r -n > ./DUMP-TEXT/"$cptTableau-$compteur"-index.txt #bigramme echo "----BIGRAMME----" tail -n +2 ./DUMP-TEXT/colonne.txt > ./DUMP-TEXT/colonne2.txt paste ./DUMP-TEXT/colonne.txt ./DUMP-TEXT/colonne2.txt | sort | uniq -c | sort -rn > ./DUMP-TEXT/"$cptTableau-$compteur"-bigramme.txt #contexte python3 ./PROGRAMMES/chinois_espace.py ./DUMP-TEXT/"$cptTableau-$compteur".txt ./CONTEXTES/espace.txt #commande pour le contexte html echo "----CONTEXTE----" perl ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/minigrepmultilingue.pl "UTF-8" ./CONTEXTES/espace.txt ./PROGRAMMES/motif.txt ./CONTEXTES/"$cptTableau-$compteur"-contexte.html #commande pour le contexte txt grep -Eo '(\w+ +){0,5}'$MOT'( +\w+){0,5}' ./CONTEXTES/espace.txt > ./CONTEXTES/"$cptTableau-$compteur"-contexte.txt #motif #commande pour compter le motif echo "----MOTIF----" nb_motif=$(egrep -coi "$MOT" ./CONTEXTES/"$cptTableau-$compteur"-contexte.txt) #concaténation par mot echo "----CONCATENATION----" if [[ $fichier == "ch_urls_jiating.txt" ]] then #concatenation en contexte echo "$(<./CONTEXTES/"$cptTableau-$compteur"-contexte.txt)" >> ./CONTEXTES/$cptTableau-concat-jiating.txt #concatenation des textes complets echo "$(<./CONTEXTES/espace.txt)" >> ./DUMP-TEXT/$cptTableau-concat-jiating.txt else #concatenation en contexte echo "$(<./CONTEXTES/"$cptTableau-$compteur"-contexte.txt)" >> ./CONTEXTES/$cptTableau-concat-jiazu.txt #concatenation des textes complets echo "$(<./CONTEXTES/espace.txt)" >> ./DUMP-TEXT/$cptTableau-concat-jiazu.txt fi else #index echo "----INDEX----" egrep -o '\w+' ./DUMP-TEXT/"$cptTableau-$compteur".txt | sort | uniq -c | sort -rn > ./DUMP-TEXT/"$cptTableau-$compteur"-index.txt #bigramme echo "----BIGRAMME----" egrep -o '\w+' ./DUMP-TEXT/"$cptTableau-$compteur".txt > ./DUMP-TEXT/colonne.txt tail -n +2 ./DUMP-TEXT/colonne.txt > ./DUMP-TEXT/colonne2.txt paste ./DUMP-TEXT/colonne.txt ./DUMP-TEXT/colonne2.txt | sort | uniq -c | sort -rn > ./DUMP-TEXT/"$cptTableau-$compteur"-bigramme.txt #contexte echo "----CONTEXTE----" #html perl ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/"$cptTableau-$compteur".txt ./PROGRAMMES/motif.txt ./CONTEXTES/"$cptTableau-$compteur"-contexte.html #texte brut grep -Eo '(\w+ +){0,5}(F|f)amília(s?)( +\w+){0,5}' ./DUMP-TEXT/"$cptTableau-$compteur".txt > ./CONTEXTES/"$cptTableau-$compteur"-contexte.txt #motif #commande pour compter le motif echo "----MOTIF----" nb_motif=$(egrep -coi "(F|f)amília(s?)" ./CONTEXTES/"$cptTableau-$compteur"-contexte.txt) #concatenation en contexte echo "$(<./CONTEXTES/"$cptTableau-$compteur"-contexte.txt)" >> ./CONTEXTES/$cptTableau-concat-familia.txt #concatenation des textes complets echo "$(<./CONTEXTES/espace.txt)" >> ./DUMP-TEXT/$cptTableau-concat-familia.txt fi echo " $compteur $codeHTTP UTF8 $line $cptTableau-$compteur $cptTableau-$compteur $cptTableau-$compteur $cptTableau-$compteur $nb_motif $cptTableau-$compteur $cptTableau-$compteur " >> $DOSSIER_TABLEAUX$table } #Fonction 4 : traitement autre encodage traitement_autre_encodage() { #récupération en texte brut texte=$(lynx -assume_charset="$encodage" -dump -nolist ./PAGES-ASPIREES/"$cptTableau-$compteur".html) echo "$texte" > ./DUMP-TEXT/"$cptTableau-$compteur".txt if [[ $fichier == "jp_famille_kazoku.txt" || $fichier == "jp_famille_katei.txt" ]] then #index echo "----INDEX----" python ./PROGRAMMES/index-jp.py ./DUMP-TEXT/"$cptTableau-$compteur".txt ./DUMP-TEXT/"$cptTableau-$compteur"-index.txt #bigramme echo "----BIGRAMME----" python ./PROGRAMMES/colonne-jp.py ./DUMP-TEXT/"$cptTableau-$compteur".txt ./DUMP-TEXT/colonne.txt tail -n +2 ./DUMP-TEXT/colonne.txt > ./DUMP-TEXT/tail.txt paste ./DUMP-TEXT/colonne.txt ./DUMP-TEXT/tail.txt | sort | uniq -c | sort -rn > ./DUMP-TEXT/"$cptTableau-$compteur"-bigramme.txt #contexte echo "----CONTEXTE----" #html python ./PROGRAMMES/espace-jp.py ./DUMP-TEXT/"$cptTableau-$compteur".txt ./CONTEXTES/espace.txt perl ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/minigrepmultilingue.pl "UTF-8" ./CONTEXTES/espace.txt ./PROGRAMMES/motif.txt ./CONTEXTES/"$cptTableau-$compteur"-contexte.html #texte brut grep -Eo '(\w+ +){0,5}'$MOT'( +\w+){0,5}' ./CONTEXTES/espace.txt > ./CONTEXTES/"$cptTableau-$compteur"-contexte.txt #motif #commande pour compter le motif echo "----MOTIF----" nb_motif=$(egrep -co "$MOT" ./CONTEXTES/"$cptTableau-$compteur"-contexte.txt) #concaténation par mot echo "----CONCATENATION----" if [[ $fichier == "jp_famille_kazoku.txt" ]] then #concatenation en contexte echo "$(<./CONTEXTES/"$cptTableau-$compteur"-contexte.txt)" >> ./CONTEXTES/$cptTableau-concat-kazoku.txt #concatenation des textes complets echo "$(<./CONTEXTES/espace.txt)" >> ./DUMP-TEXT/$cptTableau-concat-kazoku.txt else #concatenation en contexte echo "$(<./CONTEXTES/"$cptTableau-$compteur"-contexte.txt)" >> ./CONTEXTES/$cptTableau-concat-katei.txt #concatenation des textes complets echo "$(<./CONTEXTES/espace.txt)" >> ./DUMP-TEXT/$cptTableau-concat-katei.txt fi else #index echo "----INDEX----" egrep -o '\w+' ./DUMP-TEXT/"$cptTableau-$compteur".txt | sort | uniq -c | sort -rn > ./DUMP-TEXT/"$cptTableau-$compteur"-index.txt #bigramme echo "----BIGRAMME----" egrep -o '\w+' ./DUMP-TEXT/"$cptTableau-$compteur".txt > ./DUMP-TEXT/colonne.txt tail -n +2 ./DUMP-TEXT/colonne.txt > ./DUMP-TEXT/colonne2.txt paste ./DUMP-TEXT/colonne.txt ./DUMP-TEXT/colonne2.txt | sort | uniq -c | sort -rn > ./DUMP-TEXT/"$cptTableau-$compteur"-bigramme.txt #contexte echo "----CONTEXTE----" #html perl ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/"$cptTableau-$compteur".txt ./PROGRAMMES/motif.txt ./CONTEXTES/"$cptTableau-$compteur"-contexte.html #texte brut grep -Eo '(\w+ +){0,5}((F|f)amília(s?))( +\w+){0,5}' ./DUMP-TEXT/"$cptTableau-$compteur".txt > ./CONTEXTES/"$cptTableau-$compteur"-contexte.txt #motif #commande pour compter le motif echo "----MOTIF----" nb_motif=$(egrep -coi "((F|f)amília(s?))" ./CONTEXTES/"$cptTableau-$compteur"-contexte.txt) echo "----CONCATENATION----" #concatenation en contexte echo "$(<./CONTEXTES/"$cptTableau-$compteur"-contexte.txt)" >> ./CONTEXTES/$cptTableau-concat-familia.txt #concatenation des textes complets echo "$(<./DUMP-TEXT/"$cptTableau-$compteur".txt)" >> ./DUMP-TEXT/$cptTableau-concat-familia.txt fi echo " $compteur $codeHTTP $encodage $line $cptTableau-$compteur $cptTableau-$compteur $cptTableau-$compteur $cptTableau-$compteur $nb_motif $cptTableau-$compteur $cptTableau-$compteur " >> $DOSSIER_TABLEAUX$table } #Fonction 4 : code erreur code_erreur(){ echo " $compteur $codeHTTP - $line - - - - - - - " >> $DOSSIER_TABLEAUX$table } #----------------------------------------------------------------------- #---------------------------SCRIPT PRINCIPAL---------------------------- #en-tête du fichier html html_entete cptTableau=0 #pour chaque élément contenu dans DOSSIER_URLS for fichier in $(ls $DOSSIER_URLS); do echo $fichier # on compte les tableaux cptTableau=$(($cptTableau+1)) variable_mot_table #ouverture du tableau echo "" >> $DOSSIER_TABLEAUX$table echo "" >> $DOSSIER_TABLEAUX$table; echo "" >> $DOSSIER_TABLEAUX$table; echo " " >> $DOSSIER_TABLEAUX$table # on va aussi compter les URLs de chaque tableau compteur=0 #lire les fichiers urls while read line; do compteur=$(($compteur+1)) #travailler avec line (l'url) codeHTTP=$(curl $line -w '%{http_code}\n' -o ./PAGES-ASPIREES/"$cptTableau-$compteur".html) # Une variable pour repérer l'encodage encodage=$(curl -L $line | egrep "charset" | cut -d"=" -f4 | cut -d"\"" -f1 | tr [a-z] [A-Z]) if [[ $codeHTTP == 200 ]] then # Mettre en place la détection de l'encodage if [[ $encodage == "UTF-8" ]] then echo "----UTF8----" traitement_utf8 # Traitement si l'encodage est différent de UTF8 else verif_iconv=$(iconv -l | egrep -io \"$encodage\") if [[ $verif_iconv != " " ]] then echo "----$encodage----" traitement_autre_encodage fi fi else echo "$codeHTTP---ECHEC" code_erreur fi done < $DOSSIER_URLS$fichier #fermeture du tableau echo "
TABLEAU $cptTableau
MOT : $MOT
code HTTP Encodage url Page Aspirée Dump Text Index Bigramme Motif Contextes HTML Contextes TXT
" >> $DOSSIER_TABLEAUX$table done echo " " >> $DOSSIER_TABLEAUX$table