Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
lien:bash:perso:abs:html2sh [2009/05/24 18:15] per |
lien:bash:perso:abs:html2sh [2009/05/24 21:10] (Version actuelle) per |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
[[.|retour]] | [[.|retour]] | ||
====== html2sh ====== | ====== html2sh ====== | ||
- | Script bash pour extraire les scripts des pages html de http://abs.traduc.org/abs-5.3-fr/ | + | Script bash pour extraire les scripts des pages html du Guide avancé d'écriture des scripts Bash |
<code bash> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
Ligne 14: | Ligne 15: | ||
if grep -q programlisting "$1" | if grep -q programlisting "$1" | ||
then | then | ||
- | # sélection des lignes de programlisting entre <pre et /pre> | + | # sélection des lignes d'un script entre <pre ... programlisting et /pre> |
# Tous les scripts seront regroupés dans le fichier temp | # Tous les scripts seront regroupés dans le fichier temp | ||
sed -n '/<pre class=\"programlisting\">/,/<\/pre>/p' "$1" >temp | sed -n '/<pre class=\"programlisting\">/,/<\/pre>/p' "$1" >temp | ||
Ligne 20: | Ligne 21: | ||
iconv -f iso8859-15 -t utf8 temp -o tmp | iconv -f iso8859-15 -t utf8 temp -o tmp | ||
rm temp # suppression de l'ancien fichier | rm temp # suppression de l'ancien fichier | ||
- | #arret # arrêt temporaire | + | arret # arrêt temporaire |
# sed -n '/motif/=' donne les numéros de ligne comportant motif | # sed -n '/motif/=' donne les numéros de ligne comportant motif | ||
# on mémorise chaque fin de script dans une variable fin_script | # on mémorise chaque fin de script dans une variable fin_script | ||
Ligne 31: | Ligne 32: | ||
do | 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 | # 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>//" -e "s/<pre class=\"programlisting\">//" -e 's/^ *$//' -e '/./,$!d' >${fichier}_${i}.sh | + | 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 | deb=$fin #pour le script suivant | ||
let i=i+1 #on incrémente le numéro de script | let i=i+1 #on incrémente le numéro de script | ||
+ | # rm tmp | ||
done | done | ||
else | else | ||
Ligne 40: | Ligne 42: | ||
exit 0 | exit 0 | ||
</code> | </code> | ||
+ | |||
+ | Ce script utilise beaucoup l'éditeur de flux Sed, pour en savoir plus : | ||
+ | http://www.commentcamarche.net/faq/478-sed | ||
+ | [[.|retour]] |