Le script Bash final :

Voilà donc notre script bash fini, agrémenté de quelques explications :



Donc voici le début du script, on commence par récupérer les chemins et le motif dans le input, puis on créer le début de la page html qui recevra les tableaux, et enfin, dans la première boucle, nous créons aussi tous les dossiers et fichiers vide dont nous nous reservirons ensuite.
Notre problème n'était pas tant de créer dès le début du script les fichier, mais surtout d'effacer ceux qui était présent auparavant, car cela fait se concaténer les contenus.
Et si nous utilisons deux commandes pour les dossiers plutôt que 'mkdir -p' qui pour pourrait écraser et recréer, c'est simplement car cela ne marchait pas et que les fichiers cherchaient à s'accumuler.
Nous incrémentons un premier compteur "j", qui correspondra aux 3 langues - 3 tableaux, toujours séparés dans les dossiers.

Un deuxième compteur est incrémenté juste ensuite, pour compter les URLs que l'on a donné en lien, et directement, il est utilisé pour créer la première colonne de notre tableau, qui compte les URLs.



Nous arrivons donc à la deuxième boucle, qui, pour chaque ligne -correspondant à une URL- des fichiers, va aspirer la page au moyen de CURL. Ensuite nous devons vérifier si la page a une erreur, si elle n'en a pas, elle nous renvoie 'good' et continue. Nous récupérons l'encodage au moyen de File -I et le mettons dans un variable.



Si la variable contient 'utf-8' alors cela continue ici, avec "lynx -dump -nolist -display_charset", expliquée dans un autre article, nous créons un dump, lequel sera en utf-8. Nous ajoutons aussi la balise séparatrice des fichiers pour le fichier ou se concatènent ensuite les dumps. Puis nous faisons un index sur ces dump, au moyen d'un egrep -o et de l'expression régulière "\w+". L'index sera alors placé dans la dernière colonne de notre tableau. Ensuite, nous passons à l'extraction du motif dans les dumps, qui extrait en fait toute la ligne sur laquelle se trouve le motif, nous créons un fichier contexte individuel et un fichier contexte global, dans lequel la balise de séparation est aussi ajoutée. Nous comptons aussi le nombre d'occurences, même si cela ne marche que sur les pages qui était initialement en UTF-8.
Vient alors l'utilisation du programme perl 'minigrepmultilingue', lequel fera une extraction des motifs et les insérera dans un page html.



Nous passons à la suite, si la condition selon laquelle l'encodage serait de l'utf-8 n'est pas respectée, nous arrivons ici, nous prenons la valeur de la variable encodage, nous regardons si elle se trouve dans la liste de iconv, si elle y est, alors iconv fait la conversion, puis nous retraitons le fichier comme nous l'avons fait sur ceux directement en utf-8.
A noter, la plupart des pages traitées ici sont initialement en iso-8859, et le comptage des occurences ne fonctionne pas sur ces fichiers, cela nous renvoie un valeur 0. Cela parait étrange étant donné le fait que l'extraction du motif et du contexte au moyen de egrep fonctionne exactement de la meme façon que sur les autres pages par contre. Nous pas su trouver la réponse à ce problème.



Nous en venons au point où les pages ne seraient pas en utf-8 ou en tout cas, pas reconnaissables par ce que file -I à renvoyer à iconv. Donc nous chersons un charset, Si il y en a un, nous prenons la valeur qui le suit, nous la mettons dans notre variable envodage, et nous traitons le fichier comme les autres!



Et là par contre, si le charset n'est pas reconnu par iconv, alors nous ne traitons pas ce fichier.
De la même façon, si il n'y a pas de charset de trouvé, nous ne traitons pas le fichier.
Nous refermons alors tout nos 'if' par 'fi' et alors nous prenons pour les fichier traités, les dumps globaux et les contexte globaux, et nous créons les index globaux sur ceux-ci.

Il reste alors les pages des URLs qui contenaient des erreurs :



Ces pages contenant des erreurs ne seront pas traitées, leur ligne dans les tableaux html sera marquée en rose comme celles de ceux qui ont un encodage non reconnu par iconv ou pas de charset et dont nous ne savons quel est l'encodage.
Nous incrémentons le compteur de fichiers de +1, fermons la deuxième boucle, et ajoutons la dernière ligne de chacun des tableaux avec les dumps et contextes globaux et leurs index.
Nous fermons ensuite la première boucle, les tableaux et la page html et c'est ainsi que se termine notre programme.