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 <pre ... programlisting et /pre> # Tous les scripts seront regroupés dans le fichier temp sed -n '/<pre class=\"programlisting\">/,/<\/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/<pre class=\"programlisting\">//" -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