Généralités
Ce script permet de générer un tableau contenant les concordances entourant le mot cible. Il est exécuté directement dans le script de base.
- Le dossier dump des textes.
- Le motif, qui est le mot recherché.
La sortie attendue
La sortie attendue de ce script est donc un tableau comprenant les informations suivantes pour chaque url:
- Le contexte à gauche du mot cible.
- Le mot cible.
- Le contexte à droite du mot cible.
Lancement du script
Le script est lancé directement dans le script de tableau bash avec la commande :
bash programmes/concordance.sh ./$fichier_text/$basename-$lineno.txt $motif > ./concordances/$basename-$lineno.html
#!/usr/bin/bash
# Déclaration de deux variables
fichier_text=$1 # Dossier des dumps
motif=$2 # Mot recherché
if [[ $# -ne 2 ]] # Vérifie si les deux variables sont entrées en argument
then
echo "Ce programme demande exactement deux arguments."
exit
fi
if [[ ! -f $fichier_text ]]
then
echo "le fichier $fichier_text n'existe pas"
exit
fi
if [[ -z $motif ]]
then
echo "le motif est vide"
exit
fi
# Début du tableau
echo "
<!DOCTYPE html>
<html lang=\"en\">
<head>
<meta charset=\"UTF-8\">
<title>Concordance</title>
</head>
<body>
<table>
<thead>
<tr>
<th class=\"has-text-right\">Contexte gauche</th>
<th>Cible</th>
<th class=\"has-text-left\">Contexte droit</th>
</tr>
</thead>
<tbody>
"
# Expression régulière
grep -E -o "(\w+\W+){0,5}\b$motif\b(\W+\w+){0,5}" $fichier_text | sed -E "s/(.*)($motif)(.*)/<tr><td>\1<\/td><td>\2<\/td><td>\3<\/td><\/tr>/"
# Début du tableau
echo "
</tbody>
</table>
</body>
</html>
"
Passons maintenant à la description précise du contenu et des commandes du scrpit
fichier_text=$1
motif=$2 # Expression régulière
if [[ $# -ne 2 ]]
then
echo "Ce programme demande exactement deux arguments."
exit
fi
if [[ ! -f $fichier_text ]]
then
echo "le fichier $fichier_text n'existe pas"
exit
fi
if [[ -z $motif ]]
then
echo "le motif est vide"
exit
fi
Ce script nécessite deux arguments lors de son exécution dans le terminal pour fonctionner. Si ces deux arguments ne sont pas donnés, le programme s'arrête.
Pareil si le dossier de textes ou le mot n'existe pas.
echo "
<!DOCTYPE html>
<html lang=\"en\">
<head>
<meta charset=\"UTF-8\">
<title>Concordance</title>
</head>
<body>
<table>
<thead>
<tr>
<th class=\"has-text-right\">Contexte gauche</th>
<th>Cible</th>
<th class=\"has-text-left\">Contexte droit</th>
</tr>
</thead>
<tbody>
"
echo "<html><head><link rel="stylesheet" href="style.css"></head><body>" > $fichier_tableau
echo "<h2>Tableau $basename :</h2>" >> $fichier_tableau
echo "<br/>" >> $fichier_tableau
echo "<table>" >> $fichier_tableau
Ici, c'est le début du tableau.
On va créer trois colonnes : Contexte gauche, le mot cible, Contexte droit.
grep -E -o "(\w+\W+){0,5}\b$motif\b(\W+\w+){0,5}" $fichier_text | sed -E "s/(.*)($motif)(.*)/<tr><td>\1<\/td><td>\2<\/td><td>\3<\/td><\/tr>/"
Cette expression régulière permet de récupérer les mots autour du mot cible dans le bon fichier.
Jusqu'à 5 mots autour vont être récupérés.
echo " </tbody> </table> </body> </html> "
On ferme le tableau ici.