Script coréen
#!/usr/bin/bash
#coding=utf-8
# script pour le coréen
# $1 : nom de dossier où ils se trouvent les urls
# $2 : nom de dossier où il se trouve le tableau
# $3 : motif à analyser
# motif : 노조
# utilisation: sur la ligne de commande : bash nom_script_bash dossier_urls fichier_tableaux.html motif
# exemple : $ bash ./PROGRAMMES/scripthayoung.sh ./URLS/ ./TABLEAUX/tableaux.html 노조
#-------------------------------------------------------------------------------
# entete fichier html
echo "<html>" > $2 ;
echo "<head><title>TABLEAUX URL</title>
<meta charset=\"UTF-8\" /></head>" >> $2 ;
echo "<body>" >> $2 ;
#-------------------------------------------------------------------------------
compteurtableau=1;
for fichier in $(ls $1)
do
echo "<table align=\"center\" border=\"1\">" >> $2 ;
echo "<tr bgcolor=\"yellow\"><td>N°</td><td>CodeHttp</td><td>URL</td><td>Page Aspirée</td><td>Encodage</td><td>Dump</td><td>Contexte</td><td>Contexte HTML</td><td>Fq Motif</td><td>Index</td><td>Bigramme</td></tr>" >> $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
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> \n -code sortie : $code_sortie \n -encodage : $ENCODAGE \n -url :$ligne";
if [[ $ENCODAGE == "UTF-8" ]]
then
echo -e " -encodage initial validé = <$ENCODAGE> \n -Traitement en cours...";
# aspiration de l'URL
curl -sL -o ./PAGES-ASPIREES/$compteurtableau-$compteur.html $ligne ;
# dump de l'URL
lynx -dump -nolist -assume_charset=$ENCODAGE -display_charset=$ENCODAGE ./PAGES-ASPIREES/$compteurtableau-$compteur.html > ./DUMP-TEXT/$compteurtableau-$compteur.txt;
iconv -c -f $ENCODAGE -t UTF-8 ./DUMP-TEXT/$compteurtableau-$compteur.txt > ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt
#---------------------------------------------------------------------------
# contexte
egrep -i "$3" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt > ./CONTEXTES/$compteurtableau-$compteur.txt;
# minigrep
perl ./minigrep/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt ./minigrep/motif-regexp.txt ;
mv resultat-extraction.html ./CONTEXTES/$compteurtableau-$compteur.html ;
# segmentation coréen
mecab -d/usr/local/lib/mecab/dic/mecab-ko-dic/ ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt |tr -d "EOS"|cut -f1|tr "\n" " " > ./DUMP-TEXT/$compteurtableau-$compteur-utf8-segment.txt ;
echo -e " -segmentation des textes coréens utf-8 ... \n";
# fréquence motif
nbmotif=$(egrep -coi "$3" ./DUMP-TEXT/$compteurtableau-$compteur-utf8-segment.txt|wc -l);
# index hierarchique
egrep -o "(\w|[ㄱ-힣])+" ./DUMP-TEXT/$compteurtableau-$compteur-utf8-segment.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/index-$compteurtableau-$compteur.txt ;
# bigramme
egrep -o "(\w|[ㄱ-힣])+" ./DUMP-TEXT/$compteurtableau-$compteur-utf8-segment.txt > bi1.txt;
tail -n +2 bi1.txt > bi2.txt ;
paste bi1.txt bi2.txt > bi3.txt ;
cat bi3.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/bigramme-$compteurtableau-$compteur-utf8.txt ;
#---------------------------------------------------------------------------
echo "<tr><td>$compteur</td><td>$code_sortie</td><td><a target=\"_blank\" href=\"$ligne\">$ligne</a></td><td><a target=\"_blank\" href=\"../PAGES-ASPIREES/$compteurtableau-$compteur.html\">page aspirée n° $compteur</a></td><td>$ENCODAGE</td><td><a target=\"_blank\" href=\"../DUMP-TEXT/$compteurtableau-$compteur.txt\">DUMP n° $compteur</a></td><td><a href=\"../CONTEXTES/$compteurtableau-$compteur.txt\">$compteurtableau-$compteur</a></td><td><a href=\"../CONTEXTES/$compteurtableau-$compteur.html\">$compteurtableau-$compteur</a></td><td>$nbmotif</td><td><a href=\"../DUMP-TEXT/index-$compteurtableau-$compteur.txt\">$compteurtableau-$compteur</a></td><td><a href=\"../DUMP-TEXT/bigramme-$compteurtableau-$compteur.txt\">$compteurtableau-$compteur</a></td></tr>" >> $2 ;
else
echo -e " -code sortie = 200 mais encodage ≠ UTF-8 \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 ;
echo -e " -encodage vide… \n -Extraction de l'encodage via la page aspirée : $ENCODAGEFILE \n";
echo -e " -vérification d'encodage extrait via la page aspirée… \n";
ENCODAGE2=$(egrep -oi "charset=(\"|\')?[^(\"|\'|&|,)]+(\"|\')?" "./PAGES-ASPIREES/$compteurtableau-$compteur.html" |head -1 | cut -d"=" -f2 | sed 's/"//g' | sed "s/'//g" | tr [[:lower:]] [[:upper:]]);
if [[ $ENCODAGE2 == "UTF-8" ]]
then
echo -e " -encodage de la page aspirée <$ENCODAGE2> validé. \n -Traitement en cours…";
# dump de l'URL
lynx -dump -nolist -assume_charset=$ENCODAGE2 -display_charset=$ENCODAGE2 ./PAGES-ASPIREES/$compteurtableau-$compteur.html > ./DUMP-TEXT/$compteurtableau-$compteur.txt;
iconv -c -f $ENCODAGE2 -t UTF-8 ./DUMP-TEXT/$compteurtableau-$compteur.txt > ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt ;
#---------------------------------------------------------------------------
# contexte
egrep -i "$3" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt > ./CONTEXTES/$compteurtableau-$compteur.txt;
# minigrep
perl ./minigrep/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt ./minigrep/motif-regexp.txt ;
mv ./minigrep/resultat-extraction.html ./CONTEXTES/$compteurtableau-$compteur.html ;
# segmentation coréen
mecab -d/usr/local/lib/mecab/dic/mecab-ko-dic/ ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt |tr -d "EOS"|cut -f1|tr "\n" " " > ./DUMP-TEXT/$compteurtableau-$compteur-utf8-segment.txt ;
echo -e " -segmentation des textes coréens utf-8 ... \n";
# fréquence motif
nbmotif=$(egrep -oi "$3" ./DUMP-TEXT/$compteurtableau-$compteur-utf8-segment.txt|wc -l);
# index hierarchique
egrep -o "(\w|[ㄱ-힣])+" ./DUMP-TEXT/$compteurtableau-$compteur-utf8-segment.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/index-$compteurtableau-$compteur.txt ;
# bigramme
egrep -o "(\w|[ㄱ-힣])+" ./DUMP-TEXT/$compteurtableau-$compteur-utf8-segment.txt > bi1.txt;
tail -n +2 bi1.txt > bi2.txt ;
paste bi1.txt bi2.txt > bi3.txt ;
cat bi3.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/bigramme-$compteurtableau-$compteur.txt ;
echo "<tr><td>$compteur</td><td>$code_sortie</td><td><a target=\"_blank\" href=\"$ligne\">$ligne</a></td><td><a target=\"_blank\" href=\"../PAGES-ASPIREES/$compteurtableau-$compteur.html\">page aspirée n° $compteur</a></td><td>$ENCODAGE2</td><td><a target=\"_blank\" href=\"../DUMP-TEXT/$compteurtableau-$compteur.txt\">DUMP n° $compteur</a></td><td><a href=\"../CONTEXTES/$compteurtableau-$compteur.txt\">$compteurtableau-$compteur</a></td><td><a href=\"../CONTEXTES/$compteurtableau-$compteur.html\">$compteurtableau-$compteur</a></td><td>$nbmotif</td><td><a href=\"../DUMP-TEXT/index-$compteurtableau-$compteur.txt\">$compteurtableau-$compteur</a></td><td><a href=\"../DUMP-TEXT/bigramme-$compteurtableau-$compteur.txt\">$compteurtableau-$compteur</a></td></tr>" >> $2 ;
else
#ici curl a renvoyé un truc non vide, mais c'est pas UTF8
reponse=$(iconv -l | egrep -i "$ENCODAGE2") ;
if [[ $reponse != "" ]]
then
echo -e " -encodage < $ENCODAGE2 > connu par iconv. Traitement en cours…";
curl -sL -o ./PAGES-ASPIREES/$compteurtableau-$compteur.html $ligne ;
# dump de l'URL
lynx -dump -nolist -assume_charset=$ENCODAGE2 -display_charset=$ENCODAGE2 ./PAGES-ASPIREES/$compteurtableau-$compteur.html > ./DUMP-TEXT/$compteurtableau-$compteur.txt;
iconv -c -f $ENCODAGE2 -t UTF-8 ./DUMP-TEXT/$compteurtableau-$compteur.txt > ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt ;
# contexte
egrep -i "$3" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt > ./CONTEXTES/$compteurtableau-$compteur.txt;
# minigrep
perl ./minigrep/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt ./minigrep/motif-regexp.txt ;
mv resultat-extraction.html ./CONTEXTES/$compteurtableau-$compteur.html ;
#segemtation coréen
mecab -d/usr/local/lib/mecab/dic/mecab-ko-dic/ ./DUMP-TEXT/$compteurtableau-$compteur-utf8.txt |tr -d "EOS"|cut -f1 |tr "\n" " " > ./DUMP-TEXT/$compteurtableau-$compteur-utf8-segment.txt ;
echo -e " -segmentation des textes coréens utf-8 ... \n";
# fréquence motif
nbmotif=$(egrep -oi "$3" ./DUMP-TEXT/$compteurtableau-$compteur-utf8-segment.txt|wc -l);
# index hiérarchique
egrep -o "(\w|[ㄱ-힣])+" ./DUMP-TEXT/$compteurtableau-$compteur-utf8-segment.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/index-$compteurtableau-$compteur.txt ;
# bigramme
egrep -o "(\w|[ㄱ-힣])+" ./DUMP-TEXT/$compteurtableau-$compteur-utf8-segment.txt > bi1.txt;
tail -n +2 bi1.txt > bi2.txt ;
paste bi1.txt bi2.txt > bi3.txt ;
cat bi3.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/bigramme-$compteurtableau-$compteur.txt ;
echo "<tr><td>$compteur</td><td>$code_sortie</td><td><a target=\"_blank\" href=\"$ligne\">$ligne</a></td><td><a target=\"_blank\" href=\"../PAGES-ASPIREES/$compteurtableau-$compteur.html\">page aspirée n° $compteur</a></td><td>$ENCODAGE2</td><td><a target=\"_blank\" href=\"../DUMP-TEXT/$compteurtableau-$compteur.txt\">DUMP n° $compteur</a></td><td><a href=\"../CONTEXTES/$compteurtableau-$compteur.txt\">$compteurtableau-$compteur</a></td><td><a href=\"../CONTEXTES/$compteurtableau-$compteur.html\">$compteurtableau-$compteur</a></td><td>$nbmotif</td><td><a href=\"../DUMP-TEXT/index-$compteurtableau-$compteur.txt\">$compteurtableau-$compteur</a></td><td><a href=\"../DUMP-TEXT/bigramme-$compteurtableau-$compteur.txt\">$compteurtableau-$compteur</a></td></tr>" >> $2 ;
else
echo -e " -L'encodage initial n'apparaît pas dans la liste d'iconv. \n";
echo "<tr><td>$compteur</td><td>$code_sortie</td><td><a target=\"_blank\" href=\"$ligne\">$ligne</a></td><td> - </td><td> - </td><td> - </td><td> - </td><td> - </td><td> - </td><td> - </td><td> - </td></tr>" >> $2 ;
fi
fi
fi
fi
else
echo -e "problème....$compteurtableau::$compteur::$code_sortie::::$ligne\n";
echo "<tr><td>$compteur</td><td><font color=\"red\"><b>$code_sortie</b></td><td><a target=\"_blank\" href=\"$ligne\">$ligne</a></td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>" >> $2 ;
fi
compteur=$((compteur + 1));
echo -e "_____________________________________________________________________\n";
done;
echo "</table>" >> $2 ;
echo "<hr color=\"red\" />" >> $2 ;
compteurtableau=$((compteurtableau + 1));
done;
#-------------------------------------------------------------------------------
# Phase 4 : ECRITURE FIN DE FICHIER HTML
echo "</body>" >> $2 ;
echo "</html>" >> $2 ;
#-------------------------------------------------------------------------------
# c'est fini
exit;
Scripts anglais
Script nettoyage corpus
egrep -o 'http[^\"]+' ../URLS/URLS_pje/URLS_TU/URLS_TU.txt|egrep -v "(microsoft|bing|<|svg|storage|w3|creativecommons|cliquez|schemas|http-equiv|login|pdf)"|sort |uniq |egrep -v "http.?:/{0,2}$" >> ../URLS/URLS_pje/URLS_TU/URLS_TU1;
Script principal
#!/bin/bash
# Au cas-où le fichier existerait déjà, on le supprime, pour pouvoir en refaire un
rm -f "$2/tableau.html" ;
# on récupère les 3 arguments que l'on a passés au programme
# le premier : chemin vers le dossier contenant les fichiers d'URL
# le deuxième: chemin vers le dossier devant contenir le fichier HTML final
#le troisième : le motif recherché
echo "Les urls SONT DANS : $1" ;
echo "On créé le tableau HTML dans : $2" ;
echo "Le motif est : $3" ;
echo "<html><head><meta charset=\"utf-8\" /><title>TABLEAU D'URLs</title></head><body>" >> $2/tableau.html;
# Création d'une variable pour compter les fichiers traités et donc le nb de tableau généré
# cette variable sera utilisée pour créer les noms de fichiers associés à chaque URL
numerotableau=1;
#----------------------------------------------------------------
# Parcours du dossier contenant les fichiers URLs
for fichier in $(ls $1)
do
compteur=1; # compteur destiné à compter les URLs pour chaque fichier d'URL
echo "$1/$fichier" ;
#-----------------------------------------------------------
# Création du tableau associé au fichier en cours de traitement
#-----------------------------------------------------------
echo "<table border=\"2\" align=\"center\" width=\"80%\">" >> $2/tableau.html ;
echo "<tr bgcolor=\"grey\"><td>N°</td><td>URL</td><td>Code http</td><td>encodage</td><td>Page aspirée</td><td>Dump</td><td>Filtrage Txt</td><td>Filtrage Html</td><td>Index</td><td>Bitexte</td><td>Fq Motif</td></tr>" >> $2/tableau.html ;
#----------------------------------------------------------------
# "parcours" d'un fichier d'URL : lecture ligne à ligne des URLs
for ligne in $(cat "$1/$fichier")
do
echo "----------------------------------------------";
echo "Traitement de l'URL : $ligne";
echo "----------------------------------------------";
#-----------------------------------------------------------
# 1. on teste la connexion vers l'URL : récupération de http_code via curl
#-----------------------------------------------------------
coderetourhttp=$(curl -SIL -o tmp.txt -w %{http_code} $ligne);
echo "CODE HTTP : $coderetourhttp";
# si coderetourhttp est egale à 200
if [[ $coderetourhttp == 200 ]]
then
#-----------------------------------------------------------
# 2. on essaie de récupérer l'encodage de la page associée à l'URL
# REMARQUE : la commande suivante est lancée que si http_code=200
#-----------------------------------------------------------
encodage=$(curl -sIL -o toto -w %{content_type} $ligne | cut -f2 -d"=" | tr '[a-z]' '[A-Z]' | tr -d '\r');
echo "ENCODAGE DETECTE PAR CURL : $encodage";
#-----------------------------------------------------------
# 3. on récupère la page localement et on la range dans le bon dossier
#-----------------------------------------------------------
curl -L -o "./PAGES-ASPIREES/$numerotableau-$compteur.html" "$ligne";
#-----------------------------------------------------------
if [[ $encodage == "UTF-8" ]]
then
#-----------------------------------------------------------
# On remplit le tableau : 1 ligne par URL et autant de colonnes que de traitement réalisés
# Pour le dump via LYNX on travaille sur la page aspirée
#-----------------------------------------------------------
# 1. On lynx la page aspirée
lynx -dump -nolist -assume_charset=$encodage -display_charset=$encodage "./PAGES-ASPIREES/$numerotableau-$compteur.html" > ./DUMP-TEXT/$numerotableau-$compteur.txt;
#-----------------------------------------------------------
# 2. On cree le fichier contexte TXT via egrep
egrep -i -C2 "$3" ./DUMP-TEXT/$numerotableau-$compteur.txt > ./CONTEXTES/$numerotableau-$compteur.txt;
#-----------------------------------------------------------
# 3. Fq motif
nbmotif=$(egrep -coi "$3" ./DUMP-TEXT/$numerotableau-$compteur.txt;);
#-----------------------------------------------------------
# 4. contexte html
perl ./minigrep/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/$numerotableau-$compteur.txt ./minigrep/parametre-motif.txt >> resultat-extraction.html;
mv resultat-extraction.html ./CONTEXTES/$numerotableau-$compteur.html ;
#-----------------------------------------------------------
# 5. index hierarchique
egrep -o "\w+" ./DUMP-TEXT/$numerotableau-$compteur.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/index-$numerotableau-$compteur.txt ;
#-----------------------------------------------------------
# 6. bigramme
egrep -o "\w+" ./DUMP-TEXT/$numerotableau-$compteur.txt > bi1.txt;
tail -n +2 bi1.txt > bi2.txt ;
paste bi1.txt bi2.txt > bi3.txt ;
cat bi3.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/bigramme-$numerotableau-$compteur.txt ;
#-----------------------------------------------------------
# 7. on écrit les résultats dans le tableau avec tous les résultats produits
echo "<tr>
<td>$compteur</td>
<td><a href=\"$ligne\" target=\"_blank\">$ligne</a></td>
<td>Code_http:$coderetourhttp</td>
<td>Encodage:$encodage</td>
<td><a href=\"../PAGES-ASPIREES/$numerotableau-$compteur.html\">$numerotableau-$compteur.html</a></td>
<td><a href=\"../DUMP-TEXT/$numerotableau-$compteur.txt\">$numerotableau-$compteur.txt</a></td>
<td><a href=\"../CONTEXTES/$numerotableau-$compteur.txt\">$numerotableau-$compteur.txt</a></td>
<td><a href=\"../CONTEXTES/$numerotableau-$compteur.html\">$numerotableau-$compteur.html</a></td>
<td><a href=\"../DUMP-TEXT/index-$numerotableau-$compteur.txt\">index-$numerotableau-$compteur</a></td>
<td><a href=\"../DUMP-TEXT/bigramme-$numerotableau-$compteur.txt\">bigramme-$numerotableau-$compteur</a></td>
<td>$nbmotif</td>
</tr>" >> $2/tableau.html;
#-----------------------------------------------------------
# Ici on va s'occuper du cas pour lequel l'encodage n'est pas en UTF-8
else
encodage=$(iconv -l | egrep -oi $encodage | uniq)
if [[ $encodage == "" ]]
#boucle en if, la condition est entre crochet
then
encodage=$(egrep "charset" "./PAGES-ASPIREES/$numerotableau-$compteur.html"| sed -r s"s/charset=/%/g" |cut -f2 -d "%"|cut -fl -d ""|tr '[a-z]' '[A-Z]'|tr -d '(\r|\"|/>)');
encodage=$(iconv -l|egrep -oi $encodage|uniq);
if [[ $encodage == "" ]]
then
echo "<tr><td>$compteur</td><td><a href=\"$ligne\" target=\"_blank\">$ligne</a></td><td>Code_http:$coderetourhttp</td><td>Encodage:$encodage</td>
<td><a href=\"../PAGES-ASPIREES/$numerotableau-$compteur.html\">$numerotableau-$compteur.html</a></td><td>-</td></tr>" >> $2/tableau.html;
else
lynx -dump -nolist -assume-charset=$encodage -display-charset=$encodage "./PAGES-ASPIREES/$numerotableau-$compteur.html" > ./DUMP-TEXT/$numerotableau-$compteur.txt;
if [[ $encodage == "ISO-8859-1" ]]
# Dans un premier temps, la condition utilisé était if [[$encodage != "UTF-8"]], mais après quelques soucis, j'ai préféré indiqué le seul encodage différent de l'UTF-8 qui apparaissait dans mon tableau, pour la colonne "encodage"
then
iconv -f $encodage -t UTF-8 ./DUMP-TEXT/$numerotableau-$compteur.txt;
# On utilise la commande iconv pour convertir l'encodage originel de la page en UTF-8, après le -f on entre l'encodage source et après le -t l'encodage dans lequel on souhaite le "convertir"
fi
echo "<tr><td>$compteur</td><td><a href=\"$ligne\" target=\"_blank\">$ligne</a></td><td>Code_http:$coderetourhttp</td>
<td>Encodage:$encodage</td><td><a href=\"../PAGES-ASPIREES/$numerotableau-$compteur.html\">$numerotableau-$compteur.html</a></td>
<td><a href=\"../DUMP-TEXT/$numerotableau-$compteur.txt\">$numerotableau-$compteur.txt</a></td></tr>" >> $2/tableau.html;
fi
else
#ici si l'encodage est autre qu'ISO-8859-1, on le convertit aussi en UTF-8
lynx -dump -nolist -assume-charset=$encodage -display-charset=$encodage "./PAGES-ASPIREES/$numerotableau-$compteur.html" > ./DUMP-TEXT/$numerotableau-$compteur.txt;
iconv -f $encodage -t UTF-8 ./DUMP-TEXT/$numerotableau-$compteur.txt;
echo "<tr><td>$compteur</td><td><a href=\"$ligne\" target=\"_blank\">$ligne</a></td><td>Code_http:$coderetourhttp</td>
<td>Encodage:$encodage</td><td><a href=\"../PAGES-ASPIREES/$numerotableau-$compteur.html\">$numerotableau-$compteur.html</a></td>
<td><a href=\"../DUMP-TEXT/$numerotableau-$compteur.txt\">$numerotableau-$compteur.txt</a></td></tr>" >> $2/tableau.html;
fi
fi
else
echo "<tr><td>$compteur</td><td><a href=\"$ligne\" target=\"_blank\">$ligne</a></td><td>Code_http:$coderetourhttp</td><td>-</td>
<td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>" >> $2/tableau.html;
fi
# on incrémente le compteur des URLs
compteur=$((compteur+1)) ;
done
#----------------------------------------------------------------
echo "</table><br />" >> $2/tableau.html ;
# on incrémente le compteur de tableaux
numerotableau=$((numerotableau+1));
done
#----------------------------------------------------------------
echo "</body></html>" >> $2/tableau.html ;
Script français
Le script pour le traitement de l'anglais et du français est le même, il faut juste changer le fichier d'URLS utilisé pour créer le corpus ainsi que le motif recherché. ceci est indiqué dans la ligne de commande.
Script grec moderne
#!/usr/bin/bash
# MODE D'EMPLOI DU PROGRAMME :
# bash programme_tableau.sh NOM_DOSSIER_URL NOM_FICHIER_HTML motif
# 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 étudié : $3 par la suite;
# Les 3 sont fournis dans la ligne de commande via un chemin relatif par exemple:
# bash programme_tableau.sh ./URLS ./TABLEAUX/tableau.html συνδικ
#-------------------------------------------------------------------------------
# Phase 1 : écriture en-tête du fichier HTML
echo "<html>" > $2 ;
echo "<head><title>TABLEAUX URL</title>
<meta charset=\"UTF-8\" /></head>" >> $2 ;
echo "<body>" >> $2 ;
#-------------------------------------------------------------------------------
# Phase 2 : traitement de chaque fichier d'URLs
compteurtableau=1;
for fichier in $(ls $1)
do
echo "<table align=\"center\" border=\"1\">" >> $2 ;
echo "<tr bgcolor=\"yellow\"><td>N°</td><td>CodeHttp</td><td>URL</td><td>Page Aspirée</td><td>Encodage Initial</td><td>Dump</td><td>Contexte</td><td>Fq Motif</td><td>Index</td><td>Bigramme</td></tr>" >> $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 ;
#---------------------------------------------------------------------------
# reste à faire : contexte, bigramme, comptage occurrences dans DUMP
# ET ajouter les colonnes qui vont avec...
#---------------------------------------------------------------------------
# 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. index hierarchique
egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/index-$compteurtableau-$compteur.txt ;
# 4. bigramme
egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur.txt > bi1.txt;
tail -n +2 bi1.txt > bi2.txt ;
paste bi1.txt bi2.txt > bi3.txt ;
cat bi3.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/bigramme-$compteurtableau-$compteur.txt ;
rm bi1.txt;
rm bi2.txt;
rm bi3.txt;
#---------------------------------------------------------------------------
echo "<tr><td>$compteur</td><td>$code_sortie</td><td><a target=\"_blank\" href=\"$ligne\">$ligne</a></td><td><a target=\"_blank\" href=\"../PAGES-ASPIREES/$compteurtableau-$compteur.html\">page aspirée n° $compteur</a></td><td>$ENCODAGE</td><td><a target=\"_blank\" href=\"../DUMP-TEXT/$compteurtableau-$compteur.txt\">DUMP n° $compteur</a></td><td><a href=\"../CONTEXTES/$compteurtableau-$compteur.txt\">CT $compteurtableau-$compteur</a></td><td>$nbmotif</td><td><a href=\"../DUMP-TEXT/index-$compteurtableau-$compteur.txt\">Ind $compteurtableau-$compteur</a></td><td><a href=\"../DUMP-TEXT/bigramme-$compteurtableau-$compteur.txt\">Bigr $compteurtableau-$compteur</a></td></tr>" >> $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 != "UTF-8" ]] && [[ $ENCODAGE != "ISO-8859-1" ]] && [[ $ENCODAGE != "iso-8859-1" ]] && [[ $ENCODAGE != "WINDOWS-1253" ]]
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 ;
ENCODAGEFILE=$(file -i ./PAGES-ASPIREES/$compteurtableau-$compteur.html);
echo "$ENCODAGEFILE" > encodageTemp.txt;
echo -e "ENCODAGE initial vide. ENCODAGE extrait via file : $ENCODAGEFILE \n";
echo -e "Il faut désormais s'assurer que cet encodage peut être OK ou pas... \n";
# ATTENTION: ne s'applique qu'à la détection des encodages du grec moderne :
# (US-ASCII et binary sont des proxies pour la détection des pages dynamiques en php et d'autres documents impossibles à traiter)
# (Certaines opérations d'écriture ont ici servi au "débugging" et sont inutiles au script final)
TESTENCODAGE0=$(egrep -io "(utf ?-? ?8)|(us ?-? ?ascii)|(binary)|(windows ?-? ?125)|(ISO ?-? ?8859)" encodageTemp.txt | tr "[a-z]" "[A-Z]")
echo "$TESTENCODAGE0" > encodageTemp.txt;
TESTENCODAGE=$(sed "s/[- ]//g" encodageTemp.txt);
echo "$TESTENCODAGE" > encodageTemp.txt;
echo -e "ENCODAGE = $TESTENCODAGE"
rm encodageTemp.txt;
# LA SUITE : est-ce que ENCODAGEFILE vaut UTF8 ou non ??? à vous de jouer...
if [[ $TESTENCODAGE == "UTF8" ]]
then
echo "Working"
echo -e "ENCODAGE initial <$TESTENCODAGE> OK : on passe au traitement \n";
# dump de l'URL
lynx -dump -nolist $ligne > ./DUMP-TEXT/$compteurtableau-$compteur.txt ;
#---------------------------------------------------------------------------
# reste à faire : contexte, bigramme, comptage occurrences dans DUMP
# ET ajouter les colonnes qui vont avec...
#---------------------------------------------------------------------------
# 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. index hierarchique
egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/index-$compteurtableau-$compteur.txt ;
# 4. bigramme
egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur.txt > bi1.txt;
tail -n +2 bi1.txt > bi2.txt ;
paste bi1.txt bi2.txt > bi3.txt ;
cat bi3.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/bigramme-$compteurtableau-$compteur.txt ;
rm bi1.txt;
rm bi2.txt;
rm bi3.txt;
#---------------------------------------------------------------------------
echo "<tr><td>$compteur</td><td>$code_sortie</td><td><a target=\"_blank\" href=\"$ligne\">$ligne</a></td><td><a target=\"_blank\" href=\"../PAGES-ASPIREES/$compteurtableau-$compteur.html\">page aspirée n° $compteur</a></td><td>$TESTENCODAGE</td><td><a target=\"_blank\" href=\"../DUMP-TEXT/$compteurtableau-$compteur.txt\">DUMP n° $compteur</a></td><td><a href=\"../CONTEXTES/$compteurtableau-$compteur.txt\">CT $compteurtableau-$compteur</a></td><td>$nbmotif</td><td><a href=\"../DUMP-TEXT/index-$compteurtableau-$compteur.txt\">Ind $compteurtableau-$compteur</a></td><td><a href=\"../DUMP-TEXT/bigramme-$compteurtableau-$compteur.txt\">Bigr $compteurtableau-$compteur</a></td></tr>" >> $2 ;
else
if [[ $TESTENCODAGE == "ISO8859" ]] || [[ $ENCODAGE == "ISO-8859-1" ]] || [[ $ENCODAGE == "iso-8859-1" ]]
then
echo "Working"
echo -e "ENCODAGE initial <$ENCODAGEFILE> OK : on passe au traitement \n";
lynx --assume-charset="ISO-8859-7" --display-charset="ISO-8859-7" -dump -nolist $ligne > ./DUMP-TEXT/$compteurtableau-$compteur.txt ;
iconv -f ISO-8859-7 -t utf-8 ./DUMP-TEXT/$compteurtableau-$compteur.txt > ./DUMP-TEXT/$compteurtableau-$compteur-utf8.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. index hierarchique
egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/index-$compteurtableau-$compteur.txt ;
# 4. bigramme
egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur.txt > bi1.txt;
tail -n +2 bi1.txt > bi2.txt ;
paste bi1.txt bi2.txt > bi3.txt ;
cat bi3.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/bigramme-$compteurtableau-$compteur.txt ;
rm bi1.txt;
rm bi2.txt;
rm bi3.txt;
echo "<tr><td>$compteur</td><td>$code_sortie</td><td><a target=\"_blank\" href=\"$ligne\">$ligne</a></td><td><a target=\"_blank\" href=\"../PAGES-ASPIREES/$compteurtableau-$compteur.html\">page aspirée n° $compteur</a></td><td>$TESTENCODAGE -- $ENCODAGE</td><td><a target=\"_blank\" href=\"../DUMP-TEXT/$compteurtableau-$compteur.txt\">DUMP n° $compteur</a></td><td><a href=\"../CONTEXTES/$compteurtableau-$compteur.txt\">CT $compteurtableau-$compteur</a></td><td>$nbmotif</td><td><a href=\"../DUMP-TEXT/index-$compteurtableau-$compteur.txt\">Ind $compteurtableau-$compteur</a></td><td><a href=\"../DUMP-TEXT/bigramme-$compteurtableau-$compteur.txt\">Bigr $compteurtableau-$compteur</a></td></tr>" >> $2 ;
else
if [[ $TESTENCODAGE == "WINDOWS125" ]] || [[ $ENCODAGE == "WINDOWS-1253" ]]
then
echo "Working"
echo -e "ENCODAGE initial <$ENCODAGEFILE> OK : on passe au traitement \n";
lynx --assume-charset="WINDOWS-1253" --display-charset="WINDOWS-1253" -dump -nolist $ligne > ./DUMP-TEXT/$compteurtableau-$compteur.txt ;
iconv -f WINDOWS-1253 -t utf-8 ./DUMP-TEXT/$compteurtableau-$compteur.txt > ./DUMP-TEXT/$compteurtableau-$compteur-utf8.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. index hierarchique
egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/index-$compteurtableau-$compteur.txt ;
# 4. bigramme
egrep -o "\w+" ./DUMP-TEXT/$compteurtableau-$compteur.txt > bi1.txt;
tail -n +2 bi1.txt > bi2.txt ;
paste bi1.txt bi2.txt > bi3.txt ;
cat bi3.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/bigramme-$compteurtableau-$compteur.txt ;
rm bi1.txt;
rm bi2.txt;
rm bi3.txt;
echo "<tr><td>$compteur</td><td>$code_sortie</td><td><a target=\"_blank\" href=\"$ligne\">$ligne</a></td><td><a target=\"_blank\" href=\"../PAGES-ASPIREES/$compteurtableau-$compteur.html\">page aspirée n° $compteur</a></td><td>$TESTENCODAGE -- $ENCODAGE</td><td><a target=\"_blank\" href=\"../DUMP-TEXT/$compteurtableau-$compteur.txt\">DUMP n° $compteur</a></td><td><a href=\"../CONTEXTES/$compteurtableau-$compteur.txt\">CT $compteurtableau-$compteur</a></td><td>$nbmotif</td><td><a href=\"../DUMP-TEXT/index-$compteurtableau-$compteur.txt\">Ind $compteurtableau-$compteur</a></td><td><a href=\"../DUMP-TEXT/bigramme-$compteurtableau-$compteur.txt\">Bigr $compteurtableau-$compteur</a></td></tr>" >> $2 ;
else
echo -e "L'encodage initial n'est pas un encodage pertinent.\n";
echo -e "La page aspirée ne peut être traitée\n";
echo "<tr><td>$compteur</td><td>$code_sortie</td><td><a target=\"_blank\" href=\"$ligne\">$ligne</a></td><td><a target=\"_blank\" href=\"../PAGES-ASPIREES/$compteurtableau-$compteur.html\">page aspirée n° $compteur</a></td><td><font color=\"red\">ENCODAGE NON PERTINENT</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>" >> $2 ;
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 "<tr><td>$compteur</td><td><font color=\"red\"><b>$code_sortie</b></td><td><a target=\"_blank\" href=\"$ligne\">$ligne</a></td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>" >> $2 ;
fi
compteur=$((compteur + 1));
echo -e "_____________________________________________________________________\n";
done;
echo "</table>" >> $2 ;
echo "<hr color=\"red\" />" >> $2 ;
compteurtableau=$((compteurtableau + 1));
done;
#-------------------------------------------------------------------------------
# Phase 4 : ECRITURE FIN DE FICHIER HTML
echo "</body>" >> $2 ;
echo "</html>" >> $2 ;
#-------------------------------------------------------------------------------
# c'est fini
exit;