je fais un script de parsing d'une page web dans laquelle je veux (entre autres) récupérer un formulaire.
en gros la page web est du type :
<plein de choses ...>
<input ... >
... ( le nombre de ligne ici est variable )
<plein d'autres choses>
la page web est télécharger et enregistré dans page.html (par exemple)
J'ai essayé ça :
cat page.html | sed -e /my_form/,/"<\/form>"/p
mais cela ne marche pas. ( ca m'affiche tout le fichier page.html )
Est ce que quelqu'un voit ou est l'erreur dans ma ligne sed ? ou alors pourquoi cela ne marche pas .
merci.
# form a disparu
Posté par errno . Évalué à 1.
<plein de choses ...>
<form name='my_form'>
<input ... >
... ( le nombre de ligne ici est variable )
</form>
<plein d'autres choses>
# essaie plutot ca
Posté par nlann . Évalué à 1.
[^] # Re: essaie plutot ca
Posté par jerome (site web personnel) . Évalué à 2.
sed -n '/my_form/<\/form>/ {p;}' page.html
[^] # Re: essaie plutot ca
Posté par Bernez . Évalué à 3.
sed -n '/my_form/,/<\/form>/ {p;}' page.html
À noter que « sed -n '/my_form/,/<\/form>/p' page.html » marche aussi.
[^] # Re: essaie plutot ca
Posté par errno . Évalué à 1.
J'ai pu remplacer mon bout de script tout laid que j'avais fait en attendant avec grep -n, tail et head :)
# presque
Posté par gaaaaaAab . Évalué à 2.
Le problème, c'est que tu ne lui a pas dit quoi faire sur les autres lignes, donc par défaut, il n'y touche pas, et les réimprime.
S tu rajoute un "; d" à la fin de ta commande sed (et des ' autour de ta commande), ça marche:
cat page.html | sed -e '/my_form/,/<\/form>/ p;d'
merci à http://library.n0i.net/linux-unix/faq/sed/sedfaq4.html(...) :)
[^] # Re: presque
Posté par gaaaaaAab . Évalué à 2.
sinon, je vote pour la solution de Bernard. Elle marche, et le -n de sed est fait pour ça :)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.