#!/bin/bash
#fichier html obtenu avec wget -r http://abs.traduc.org/abs-5.3-fr/
#fonction pour arrêter le script
arret() {
echo " arrêt temporaire"
exit 0
}
: ${1:?"Il faut mettre un fichier html en argument"}
# on recherche programlisting dans le fichier html (-q silencieux sans affichage)
if grep -q programlisting "$1"
then
# sélection des lignes d'un script entre
# Tous les scripts seront regroupés dans le fichier temp
sed -n '//,/<\/pre>/p' "$1" >temp
# conversion du fichier du format latin1 en utf8
iconv -f iso8859-15 -t utf8 temp -o tmp
rm temp # suppression de l'ancien fichier
arret # arrêt temporaire
# sed -n '/motif/=' donne les numéros de ligne comportant motif
# on mémorise chaque fin de script dans une variable fin_script
fin_script=$(sed -n "/pre>/=" tmp)
echo "fin_script : $fin_script" #on l'affiche
fichier=${1%.*} #on enlève l'extension .html du fichier
i=1 #on initialise à 1, le numéro du script
deb=1 #le début commence à 1
for fin in $fin_script #on sépare les différents scripts
do
# on va du début à la fin d'un script, puis on supprime les lignes de pre, enfin on enlève les lignes vides du début
sed -n "$deb,${fin}p" tmp |sed -e "s/<\/pre>//;s///" -e 's/^ *$//;/./,$!d' >${fichier}_${i}.sh
deb=$fin #pour le script suivant
let i=i+1 #on incrémente le numéro de script
# rm tmp
done
else
echo "pas de script dans $1"
fi
exit 0
Ce script utilise beaucoup l'éditeur de flux Sed, pour en savoir plus :
http://www.commentcamarche.net/faq/478-sed
[[.|retour]]