[[.|retour]] ====== html2sh ====== Script bash pour extraire les scripts des pages html du Guide avancé d'écriture des scripts Bash #!/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]]