Bonsoir,
je fais actuellement un petit programme qui supprime des balises HTML (et qui supprime aussi ce qu'il y a dans ces balises).
J'ai l'intention de supprimer des balises et leurs contenus dans toutes les pages .html nommés spip*.html, contenuent à la racine d'un répertoire.
J'ai donc commencé :
#!/bin/bash
echo 'Ceci est un programme créé pour PCStreet. Ce programme est encore en construction, et doit être utilisé pour faire des tests, UNIQUEMENT.'
read -p 'Etes-vous toujours certain de vouloir lancer ce porgramme sur votre PC (o pour oui, ou n pour non) ? ' commencer
if [ $commencer = o ]
then
echo "[OK] Vous avez démarré le programme..."
echo "Vous êtes ici : "`pwd`
read -p 'Choisissez le répertoire dans lequel se trouve les fichiers à traiter : ' repertoire
if [ -d $repertoire ]
then
echo "[OK] Le répertoire source $repertoire est un répertoire valide !"
read -p 'Dans quel répertoire souhaitez-vous copier les fichiers traités ? ' copie
if [ -d $copie ]
then
echo "[OK] Le répertoire $copie est bien un répertoire valide !"
for fichier in `ls $repertoire/spip*.html`
do
echo "Le fichier $fichier est en cours de traitement...".
debut=`grep -n "<div id=\"pied\">" $fichier | awk -F":" '{print $1}'`
liste=`grep -n "</div>" $page | awk -F":" '{print $1}'`
for i in $liste
do
if test $i -ge $debut
then
fin=$i
fi
done
echo $debut
echo $fin
sed -e '$debut,${vraiefin}d' $page
done
else
echo "[STOP] Le répertoire source $copie n'est pas valide."
fi
else
echo "[STOP] $repertoire n\est pas un répertoire valide."
fi
echo 'Exécution du programme terminée !'
else
echo "[STOP] Vous avez arrêté le porgramme, car vous n'avez pas répondu o pour oui."
fi
Voilà, j'ai passé beaucoup de temps à étudier les commandes GNU/Linux, la programmation en bash, et à faire ce programme.
Le problème, c'est que je ne sais pas comment faire l'essentiel (après echo "Le fichier $fichier est en cours de traitement...".). 😃
Donc, si quelqu'un à une idée.
J'ai réfléchi, et voilà ce qu'il faudrait faire, d'après moi (je ne sais pas comment faire ça, bien sûr).
>Obtenir la ligne sur laquelle il y a <div id="pied">, et mettre ce numéro dans la variable $debut.
>Initialiser $ligne = $debut, et $niveau = 0.
>Chercher à la ligne suivante (faire $ligne +1), et faire :
> Si ouverture d'un nouveau div à la ligne $ligne, mettre $niveau à +1, .
> Sinon, chercher fin d'un div.
> Si fin d'un div trouvé, faire $niveau -1, et si $niveau vaut 0, suppression de la ligne $debut, à la ligne courante (valeur de $ligne).
# Même chose pour un <div id="menu"> par exemple.
>Obtenir la ligne sur laquelle il y a <div id="menu">, et mettre ce numéro dans la variable $debut.
>Initialiser $ligne = $debut, et $niveau = 0.
>Chercher à la ligne suivante (faire $ligne +1), et faire :
> Si ouverture d'un nouveau div à la ligne $ligne, mettre $niveau à +1, .
> Sinon, chercher fin d'un div.
> Si fin d'un div trouvé, faire $niveau -1, et si $niveau vaut 0, suppression de la ligne $debut, à la ligne courante (valeur de $ligne).
D'avance, je vous remercie pour votre aide.