Forum Linux.debian/ubuntu Récupération de lignes dans un .txt avec sed

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
6
oct.
2016

Bonjour,

Je ne suis pas sûr d'avoir posté au bon endroit, mais bon, je tente.

J'aimerai récupérer dans un .txt des lignes d'un .html.
Facile me direz-vous, avec sed c'est possible.

Effectivement, sauf que les lignes qui m'intéressent changent de place quotidiennement.

Voici de mon script qui bloque au niveau du sed:

#récupère le numéro de ligne de Michel
grep -n «Michel» resultats.html | cut -c -3 > ligne.txt
LIGNE=$(cat /admin/ligne.txt)
LIGNE2=$(($LIGNE+2))

#Créer un fichier vainqueur.txt reprenant Michel et ses 2 poursuivants
sudo sed -n ‘LIGNE, LIGNE2’ resultats.html > /admin/vainqueurs.txt

Auriez-vous une solution pour que le sed accèpte ces LIGNE & LIGNE2?

Merci d'avance pour vos réponses

  • # Tu fais un script avec un parser HTML

    Posté par  (Mastodon) . Évalué à 1. Dernière modification le 06 octobre 2016 à 19:14.

    Bonsoir,

    Moi, je ferai un script en python avec beautifulsoup, un parser HTML complet, qui récupérerai les données pour les mettre dans le txt

    C'est un peu overkill par rapport à sed, mais c'est efficace !

    Bon courage !

    • [^] # Re: Tu fais un script avec un parser HTML

      Posté par  . Évalué à 1.

      Merci pour le conseil,
      mais malheureusement je n'y connais rien en python, même si c'est dans ma "to do list" des choses à découvrir.

      Merci encore et bonne journée

  • # solution ?

    Posté par  (site web personnel) . Évalué à 1. Dernière modification le 06 octobre 2016 à 19:36.

    essaye

    sudo sed -n "${LIGNE1},${LIGNE2}p" resultats.html > /admin/vainqueurs.txt

    • [^] # Re: solution ?

      Posté par  . Évalué à 1.

      Ou encore, sans devoir calculer les numéros de ligne avec grep : sed -n /Michel/,+2p.

    • [^] # Re: solution ?

      Posté par  . Évalué à 1. Dernière modification le 07 octobre 2016 à 08:39.

      Ça marche!!

      Merci beaucoup Xavier pour la réponse rapide :-)

    • [^] # Re: solution ?

      Posté par  . Évalué à 1. Dernière modification le 07 octobre 2016 à 08:40.

      Merci pour ta réponse benja, mais j'ai du faire une mauvaise manip' car ça ne fonctionne pas.

      Merci :-)

  • # avec grep

    Posté par  . Évalué à 6.

    #récupère le numéro de ligne de Michel
    grep -n «Michel» resultats.html | cut -c -3 > ligne.txt
    LIGNE=$(cat /admin/ligne.txt)
    LIGNE2=$(($LIGNE+2))
    #Créer un fichier vainqueur.txt reprenant Michel et ses 2 poursuivants
    sudo sed -n ‘LIGNE, LIGNE2’ resultats.html > /admin/vainqueurs.txt

    bah dans les resultats, michel doit forcement etre suivi par les 2 suivants.

    grep -A2 "Michel" resultats.html
    devrait suffire à te sortir la ligne de michel et 2 lignes A pres (A fter en anglais)

    et si des fois tu cherches les deux lignes A vant ? ben tu prend l'option -B2 ( B efore en anglais )

    • [^] # Re: avec grep

      Posté par  . Évalué à 1. Dernière modification le 07 octobre 2016 à 08:42.

      Top!

      Ça fonctionne nickel!

      Merci beaucoup NeoX pour cette astuce :-)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.