Script final utilisé pour générer le tableau :

#!/bin/bash
read REP;  
read tablo; 
read motif;
echo "<html><head> <meta charset=\"utf-8\"/><title>Tableaux de liens</title></head><body>" > $tablo;
echo "<p align=\"center\"><hr color=\"4682B4\" width=\"50%\"/></p>" >> $tablo; 
j=1;
for fic in `ls $REP`
do
	nbdump=0;
	echo "<table align=\"center\" width=\"75%\" border=\"2\" bordercolor=\"6495ED\"><tr><td colspan=\"9\" align=\"center\" bgcolor=\"4682B4\"><font color=\"white\"><b>Tableau n° $j, $(basename $fic .txt)</b></font></td></tr>" >> $tablo; 
	echo "<tr align=\"center\" bgcolor=\"6495ED\"><td>N°URL</td><td>URL</td><td>Page aspirée</td><td>Retour curl</td><td>Dump-text initial</td><td>Dump-text utf-8</td><td>Contexte .txt</td><td>Contexte .html</td></tr>" >> $tablo;
	i=1;
	mkdir ../PAGES-ASPIREES/$j;
	mkdir ../DUMP-TEXT/$j;
	mkdir ../CONTEXTES/$j;
	mkdir ../FICHIERGLOBAUX;
	for nom in `cat $REP/$fic` 
	do
#------------------------------ CURL ---------------------------------------#
		#on récupère les pages aspirées
		curl $nom -o ../PAGES-ASPIREES/$j/$i.html;
		# on récupère les erreurs grace à $controlcurl.
		retourcurl=$?			
		controlcurl=$(egrep -i -o --max-count=1 "Bad request|Service Unavailable|404 Not Found|Not Acceptable|The document has moved" ../PAGES-ASPIREES/$j/$i.html | sort -u);
		if [ "$controlcurl" != "" ]
		then
			echo "<tr><td align=\"center\" width=\"50\">$i</td><td align=\"center\" width=\"300\"><a href=\"$nom\">Lien $(basename $fic .txt) n°$i</a></td><td align=\"center\" width=\"100\"><a href=\"../PAGES-ASPIREES/$j/$i.html\">Page aspirée</a></td><td align=\"center\" bgcolor=\"CD5C5C\" width=\"50\">$controlcurl</td><td align=\"center\" width=\"100\">-</td><td align=\"center\" width=\"100\">-</td><td align=\"center\" width=\"100\">-</td><td align=\"center\" width=\"100\">-</td></tr>" >> $tablo;
		else
#------------------------------ LYNX & ICONV--------------------------------#
			# file permet de déterminer l'encodage du fichier. Cette valeur est attribuée à la variable encodage
			encodage=$(file -i ../PAGES-ASPIREES/$j/$i.html | cut -f2 -d=);
			echo $encodage;
			# on vérifie si dans encodage c'est bien la valeur utf-8
			if [ $encodage = "utf-8" ]
			then 
				lynx -dump -nolist -display_charset=$encodage ../PAGES-ASPIREES/$j/$i.html > ../DUMP-TEXT/$j/$i-utf8.txt;
				egrep -i "$motif" ../DUMP-TEXT/$j/$i-utf8.txt > ../CONTEXTES/$j/$i-utf8.txt;
				perl ./minigrep/minigrepmultilingue.pl "UTF-8" ../DUMP-TEXT/$j/$i-utf8.txt ./minigrep/motif.txt;
				mv resultat-extraction.html ../CONTEXTES/$j/$i-utf8.html;
				echo "Ok 0"
				echo "<tr><td align=\"center\" width=\"50\">$i</td><td align=\"center\" width=\"300\"><a href=\"$nom\">Lien $(basename $fic .txt) n°$i</a></td><td align=\"center\" width=\"100\"><a href=\"../PAGES-ASPIREES/$j/$i.html\">Page aspirée</a></td><td align=\"center\" width=\"50\">$retourcurl</td><td align=\"center\" width=\"100\">-</td><td align=\"center\" bgcolor=\"9ACD32\" width=\"100\"><a href=\"../DUMP-TEXT/$j/$i-utf8.txt\">Dump utf-8</a></td><td align=\"center\"  width=\"100\"><a href=\"../CONTEXTES/$j/$i-utf8.txt\">Contexte .txt</a></td><td align=\"center\"  width=\"100\"><a href=\"../CONTEXTES/$j/$i-utf8.html\">Contexte .html</a></td></tr>" >> $tablo;
				cat ../CONTEXTES/$j/$i-utf8.txt >> ../FICHIERGLOBAUX/CONTEXTES-GLOBAUX_$j.txt;
				cat ../DUMP-TEXT/$j/$i-utf8.txt >> ../FICHIERGLOBAUX/DUMP-GLOBAUX_$j.txt;
				let "nbdump+=1";
			# si la valeur de encodage n'est pas utf-8, on va utiliser la commande iconv pour modifier l'encodage du fichier.
			else 
				# Sera stocké dans la variable verif_iconv : soit l'encodage du fichier (autre que utf-8) si il est connu par iconv, soit rien si l'encodage n'est pas connu.
				verif_iconv=`iconv -l | egrep -io $encodage`;
				# si l'encodage est reconnu par iconv on fait :
				if [ "$verif_iconv" != "" ]
				then 	
					lynx -dump -nolist -display_charset=$encodage ../PAGES-ASPIREES/$j/$i.html > ../DUMP-TEXT/$j/$i.txt;
					iconv -f $encodage -t utf-8 "../DUMP-TEXT/$j/$i.txt" > "../DUMP-TEXT/$j/$i-utf8.txt";
					egrep -i "$motif" ../DUMP-TEXT/$j/$i-utf8.txt > ../CONTEXTES/$j/$i-utf8.txt;
					perl ./minigrep/minigrepmultilingue.pl "UTF-8" ../DUMP-TEXT/$j/$i-utf8.txt ./minigrep/motif.txt;
					mv resultat-extraction.html ../CONTEXTES/$j/$i-utf8.html;
					echo "Ok 1"
					echo "<tr><td align=\"center\" width=\"50\">$i</td><td align=\"center\" width=\"300\"><a href=\"$nom\">Lien $(basename $fic .txt) n°$i</a></td><td align=\"center\" width=\"100\"><a href=\"../PAGES-ASPIREES/$j/$i.html\">Page aspirée</a></td><td align=\"center\" width=\"50\">$retourcurl</td><td align=\"center\" width=\"100\"><a href=\"../DUMP-TEXT/$j/$i.txt\">Dump initial</a><br/>$encodage</td><td align=\"center\" bgcolor=\"9ACD32\" width=\"100\"><a href=\"../DUMP-TEXT/$j/$i-utf8.txt\">Dump utf-8</a></td><td align=\"center\"  width=\"100\"><a href=\"../CONTEXTES/$j/$i-utf8.txt\">Contexte .txt</a></td><td align=\"center\"  width=\"100\"><a href=\"../CONTEXTES/$j/$i-utf8.html\">Contexte .html</a></td></tr>" >> $tablo;
					cat ../CONTEXTES/$j/$i-utf8.txt >> ../FICHIERGLOBAUX/CONTEXTES-GLOBAUX_$j.txt;
					cat ../DUMP-TEXT/$j/$i-utf8.txt >> ../FICHIERGLOBAUX/DUMP-GLOBAUX_$j.txt;
					let "nbdump+=1";
				# si iconv ne reconnait pas l'endocage on peut s'aider de la balise meta des pages html.
				else 
					#si on trouve charset dans le code alors on peut continuer
					if egrep -qi ".*charset?=.*" ../PAGES-ASPIREES/$j/$i.html
					then 
						#une fois charset trouvé on isole ce qui se trouve après le =
						charset_line=$(egrep -m 1 "charset=.*\"" ../PAGES-ASPIREES/$j/$i.html);
						# une fois isolé ce qu'il y a après le =, il faut retirer les caractères APRÈS la valeur de l'encodage :
						charset=$(expr "$charset_line" : '.*=\(.*\)\"');
						#une fois la valeur de l'encodage extraite, il faut vérifier que iconv la reconnait pour pouvoir la modifier :
						verif_iconv=`iconv -l | egrep -io $charset`;
						if [ "$verif_iconv" != "" ]
						then
							lynx -dump -nolist -display_charset=$charset ../PAGES-ASPIREES/$j/$i.html > ../DUMP-TEXT/$j/$i.txt;
							iconv -f $charset -t utf-8 "../DUMP-TEXT/$j/$i.txt" > "../DUMP-TEXT/$j/$i-utf8.txt";
							egrep -i "$motif" ../DUMP-TEXT/$j/$i-utf8.txt > ../CONTEXTES/$j/$i-utf8.txt;
							perl ./minigrep/minigrepmultilingue.pl "UTF-8" ../DUMP-TEXT/$j/$i-utf8.txt ./minigrep/motif.txt;
							mv resultat-extraction.html ../CONTEXTES/$j/$i-utf8.html;
							echo "Ok 2"
							echo "<tr><td align=\"center\" width=\"50\">$i</td><td align=\"center\" width=\"300\"><a href=\"$nom\">Lien $(basename $fic .txt) n°$i</a></td><td align=\"center\" width=\"100\"><a href=\"../PAGES-ASPIREES/$j/$i.html\">Page aspirée</a></td><td align=\"center\" width=\"50\">$retourcurl</td><td align=\"center\" width=\"100\"><a href=\"../DUMP-TEXT/$j/$i.txt\">Dump initial</a><br/>$encodage</td><td align=\"center\" bgcolor=\"9ACD32\" width=\"100\"><a href=\"../DUMP-TEXT/$j/$i-utf8.txt\">Dump utf-8</a></td><td align=\"center\"  width=\"100\"><a href=\"../CONTEXTES/$j/$i-utf8.txt\">Contexte .txt</a></td><td align=\"center\"  width=\"100\"><a href=\"../CONTEXTES/$j/$i-utf8.html\">Contexte .html</a></td></tr>" >> $tablo;
							cat ../CONTEXTES/$j/$i-utf8.txt >> ../FICHIERGLOBAUX/CONTEXTES-GLOBAUX_$j.txt;
							cat ../DUMP-TEXT/$j/$i-utf8.txt >> ../FICHIERGLOBAUX/DUMP-GLOBAUX_$j.txt;
							let "nbdump+=1";
						else 
							lynx -dump -nolist -display_charset=$charset ../PAGES-ASPIREES/$j/$i.html > ../DUMP-TEXT/$j/$i.txt;
							echo "<tr><td align=\"center\" width=\"50\">$i</td><td align=\"center\" width=\"300\"><a href=\"$nom\">Lien $(basename $fic .txt) n°$i</a></td><td align=\"center\" width=\"100\"><a href=\"../PAGES-ASPIREES/$j/$i.html\">Page aspirée</a></td><td align=\"center\" width=\"50\">$retourcurl</td><td align=\"center\" bgcolor=\"CD5C5C\" width=\"100\"><a href=\"../DUMP-TEXT/$j/$i.txt\">Dump initial</a><br/>$encodage</td><td align=\"center\" width=\"100\">-</td><td align=\"center\" width=\"100\">-</td><td align=\"center\" width=\"100\">-</td></tr>" >> $tablo;
						fi
					else
						lynx -dump -nolist -display_charset=$charset ../PAGES-ASPIREES/$j/$i.html > ../DUMP-TEXT/$j/$i.txt;
						echo "<tr><td align=\"center\" width=\"50\">$i</td><td align=\"center\" width=\"300\"><a href=\"$nom\">Lien $(basename $fic .txt) n°$i</a></td><td align=\"center\" width=\"100\"><a href=\"../PAGES-ASPIREES/$j/$i.html\">Page aspirée</a></td><td align=\"center\" width=\"50\">$retourcurl</td><td align=\"center\" bgcolor=\"CD5C5C\" width=\"100\"><a href=\"../DUMP-TEXT/$j/$i.txt\">Dump initial</a><br/>$encodage</td><td align=\"center\" width=\"100\">-</td><td align=\"center\" width=\"100\">-</td><td align=\"center\" width=\"100\">-</td></tr>" >> $tablo;
					fi
				fi
			fi
#------------------------------ LYNX & ICONV--------------------------------#			
		fi
#------------------------------ CURL ---------------------------------------#
	let "i+=1";		
	done
	echo "<tr><td align=\"center\" colspan=\"5\" bgcolor=\"silver\">&nbsp</td><td align=\"center\" width=\"100\"><a href="../FICHIERGLOBAUX/DUMP-GLOBAUX_$j.txt">Fichier DUMP<br/>global</a><br/><small>$nbdump fichier(s)</small></td><td align=\"center\" width=\"100\"><a href="../FICHIERGLOBAUX/CONTEXTES-GLOBAUX_$j.txt">Fichier CONTEXTES<br/>global</a><br/><small>$nbdump fichier(s)</small></td><td align=\"center\"  bgcolor=\"silver\">&nbsp</td></tr>" >> $tablo;
	echo "</table>" >> $tablo; 
	let "j+=1"; 
	echo "<p align=\"center\"><hr color=\"4682B4\" width=\"50%\"/></p>" >> $tablo;
done
echo "</body></html>" >> $tablo; 

À propos

Nous sommes deux étudiantes en première année de master d'ingénierie linguisitque, Uta Hosokawa et Marine Cotereau. Nous sommes déjà diplômées d'une licence de sciences du langage à Paris X.