Pour pouvoir utiliser le script il faut le placer dans le dossier PROGRAMME
il faut également dans ce dossier programme :
un fichier vide.txt (qui est un fichier texte vide qui permet de réinitialiser des fichiers globaux)
un fichier concordancier.pl et un fichier motif.txt pour pouvoir utiliser le perl
un ficher que j'ai appeler d.txt qui contient trois ligne : l'endroit ou se situent les urls dans l'arboressance, là ou il faut créer le tableau et le motif
pour lancer le script dans le terminal il faut se placer dans PROGRAMME et faire : bash final.sh < d.txt
Ce qui suit est le script (je tiens a préciser que j'ai du réécrire quelques lignes de derniere minutes ayant oublier le fichier final.sh sur un ordinateur a nogent j'ai réécrit les lignes
concernant le compteur sans pouvoir les tester)
#!/bin/bash
read REP;
read tablo;
read motif;
echo "<html><head><meta http-equiv=\"Content-Type\" content=\text/html; charset=utf-8\"/><title>tableaux de liens</title></head><body>" > $tablo;
echo "<p align=\"center\"><hr color=\"blue\" width=\"50%\"/></p>" >> $tablo;
#Variable pour compter les tableaux
i=1;
#création du fichier dump global
mkdir -p ../DUMP-TEXT/DUMP-GLOBAL;
#on ecrase et remplace le contenu de global.txt par "" rien.
cat ./vide.txt > ../DUMP-TEXT/DUMP-GLOBAL/global.txt;
cat ./vide.txt > ../CONTEXTES/global$i.txt;
for fic in `ls $REP` #boucle exterieur (pour les tableaux)
do
#on remonte l'arborescence et on crée un dossier par tableau dans le dossier PAGES-ASPIREES
mkdir -p ../PAGES-ASPIREES/$i;
mkdir -p ../DUMP-TEXT/$i;
mkdir -p ../CONTEXTES/$i;
#entete et titre du tableau
echo "<table align=\"center\" border=\"1\"><tr><td colspan=\"9\" align=\"center\" bgcolor=\"black\"><font color=\"white\"><b>Tableau
n°$i</b></font></td></tr>" >> $tablo;
echo "<tr><td>numéro</td><td align=\"center\">URL et lien hypertext</td><td align=\"center\">Pages aspirées</td><td
align=\"center\">retour curl</td><td align=\"center\">DUMP</td><td align=\"center\">Encodage initial</td><td align=\"center\">DUMP utf-8</td><td
align=\"center\">Contextes</td><td align=\"center\">compteur</td></tr>">>$tablo;
# Variable i pour compter les URLs
j=1;
total=0;
for nom in `cat $REP/$fic` # boucle interieur (pour les URLS)
do
curl $nom -o "../PAGES-ASPIREES/$i/$j.html";
retourcurl=$?;
if [ "$retourcurl" -eq 0 ] #si on a reussi a aspirer la page avec curl
then
encodage=$(file -i ../PAGES-ASPIREES/$i/$j.html | cut -d= -f2);
echo "##################################################";
echo
echo "fichier/$i/$j.html encodage =
$encodage";
echo
controlcurl=$(egrep -io "Bad Request|Service Unaviable|404 Not Found|Not Acceptable|The document has moved"
../PAGES-ASPIREES/$i/$j.html);
if [ "$controlcurl" = "" ] #si la page est valide
then
if [ "$encodage" = "utf-8" ] #si c est de l utf8
then
lynx -dump -nolist $nom > ../DUMP-TEXT/$i/$j.txt;
lynx -dump -nolist $nom > ../DUMP-TEXT/$i/$j-utf-8.txt;
#il y a bien creation du fichier.txt mais pas/peu de fichier ayant contenu mauvais motif ? commande
incorrecte ?
egrep -i "\b$motif\b" ../DUMP-TEXT/$i/$j-utf-8.txt > ../CONTEXTES/$i/$j.txt;
cpt=??;
cpt=$(egrep -o -i "\b$motif\b" ../DUMP-TEXT/$j/$i-utf8.txt | wc -l );
total=`expr $total + $cpt`
#la creation des fichier avec la commande perl se fait bien mais les fichiers cree sont vide.
perl ./concordancier.pl "UTF-8" ../DUMP-TEXT/$i/$j.txt ./motif.txt > ../CONTEXTES/$j-$i.txt;
echo "<tr><td align=\"center\" width=\"50\">$j</td><td align=\"center\"
width=\"100\"><a href=\"$nom\">$nom</a></td><td align=\"center\"><a href=\"../PAGES-ASPIREES/$i/$j.html\">$j.html</a></td><td
align=\"center\">$retourcurl</td><td align=\"center\"><a href=\"../DUMP-TEXT/$i/$j.txt\">$j.txt</a></td><td align=\"center\">$encodage</td><td
align=\"center\"><a href=\"../DUMP-TEXT/$i/$j-utf-8.txt\">$j-utf-8.txt</a></td><td align=\"center\"><a
href=\"../CONTEXTES/$i/$j.txt\">Contextes$j</a></td><td align=\"center\">$cpt</td></tr>" >> $tablo;
cat ../DUMP-TEXT/$i/$j.txt >> ../DUMP-TEXT/DUMP-GLOBAL/global.txt;
cat ../DUMP-TEXT/$i/$j-utf-8.txt >> ../DUMP-TEXT/DUMP-GLOBAL/global$i-utf-8.txt;
cat ../CONTEXTES/$i/$j.txt >> ../CONTEXTES/global$i.txt;
echo
"##################################################";
else #si l encodage n est pas en utf8 alors
controlencodage=`iconv -l | egrep -io $encodage | sort -u`;
echo
"fichier/$i/$j.html controlencodage = $controlencodage";
echo
echo
"##################################################";
if [ "$controlencodage" != "" ] #si on retrouve un encodage
then
lynx -dump -nolist -display_charset=$encodage ../PAGES-ASPIREES/$i/$j.html >
../DUMP-TEXT/$i/$j.txt;
iconv -f $encodage -t utf-8 ../DUMP-TEXT/$i/$j.txt >
../DUMP-TEXT/$i/$j-utf-8.txt;
verifencodage=$(file -i ../DUMP-TEXT/$i/$j-utf-8.txt | cut -d= -f2);
#meme chose que precedement. les commandes s effectuent bien mais la plus part
des fichier cree sont vide
egrep -i "\b$motif\b" ../DUMP-TEXT/$i/$j-utf-8.txt >
../CONTEXTES/$i/$j.txt;
cpt=??;
cpt=$(egrep -o -i "\b$motif\b" ../DUMP-TEXT/$j/$i-utf8.txt | wc -l );
total=`expr $total + $cpt`
perl ./concordancier.pl "UTF-8" ../DUMP-TEXT/$i/$j.txt ./motif.txt >
../CONTEXTES/$i-$j.txt;
echo
echo
echo
echo
echo
echo #verification sur la console.
echo "le nouvel encodage est $verifencodage";
echo
echo
echo
echo
echo
echo
echo "<tr><td align=\"center\" width=\"50\">$j</td><td
align=\"center\" width=\"100\"><a href=\"$nom\">$nom</a></td><td align=\"center\"><a href=\"../PAGES-ASPIREES/$i/$j.html\">$j.html</a></td><td
align=\"center\">$retourcurl</td><td align=\"center\"><a href=\"../DUMP-TEXT/$i/$j.txt\">$j.txt</a></td><td align=\"center\">$encodage</td><td
align=\"center\"><a href=\"../DUMP-TEXT/$i/$j-utf-8.txt\">$j-utf-8.txt</a></td><td align=\"center\"><a
href=\"../CONTEXTES/$i/$j.txt\">Contextes$j</a></td><td align=\"center\">$cpt</td></tr>" >> $tablo;
cat ../DUMP-TEXT/$i/$j.txt >> ../DUMP-TEXT/DUMP-GLOBAL/global.txt;
cat ../DUMP-TEXT/$i/$j-utf-8.txt >>
../DUMP-TEXT/DUMP-GLOBAL/global$i-utf-8.txt;
cat ../CONTEXTES/$i/$j.txt >> ../CONTEXTES/global$i.txt;
else #si iconv ne reconnais pas alors :
echo "<tr><td align=\"center\" width=\"50\">$j</td><td
align=\"center\" width=\"100\"><a href=\"$nom\">$nom</a></td><td align=\"center\"><a href=\"../PAGES-ASPIREES/$i/$j.html\">$j.html</a></td><td
align=\"center\">$retourcurl</td><td align=\"center\">-</td><td align=\"center\">encodage non reconnu par iconv</td><td align=\"center\">-</td><td
align=\"center\">-</td><td align=\"center\">-</td></tr>" >> $tablo;
fi #fin de si ca n est pas reconnu
fi #fin de si c'etait de utf8
fi #fin de verif si ce n etait pas une page d erreur
else #si c est pas reconnu par curl alors
echo "<tr><td align=\"center\" width=\"50\">$j</td><td align=\"center\" width=\"100\"><a
href=\"$nom\">$nom</a></td><td align=\"center\"><a href=\"../PAGES-ASPIREES/$i/$j.html\">$j.html</a></td><td
align=\"center\">$retourcurl</td><td align=\"center\">-</td><td align=\"center\">mauvais retour curl</td><td align=\"center\">-</td><td
align=\"center\">-</td><td align=\"center\">-</td></tr>" >> $tablo;
fi #fin de si c est pas reconnu par curl
j=$((j+1));
done #fin boucle interieur
#vas ecrire une derniere ligne pour le dump global
echo "<tr><td align=\"center\" colspan=\"4\"></td><td><a
href=\"../DUMP-TEXT/DUMP-GLOBAL/global.txt\">global.txt</a></td><td></td><td><a
href=\"../DUMP-TEXT/DUMP-GLOBAL/global$i-utf-8.txt\">global$i-utf-8.txt</a></td><td><a href=\"../CONTEXTES/global$i.txt\">contexte$i.txt</a></td><td
align=\"center\">total = $total</td></tr>" >> $tablo;
echo "</table>" >> $tablo; #fin du tableau
i=$((i+=1));
done #fin boucle exterieur
echo "<p align=\"center\"><hr color=\"blue\" width=\"50%\"/></p>" >> $tablo;
echo "</body></html>" >> $tablo;


































