Forum Programmation.shell Comment extraire une partie d'un fichier texte

Posté par . Licence CC by-sa.
Tags : aucun
-2
13
mar.
2019

BONJOUR

texte html:
https://pastebin.com/wTxS5UUK
LINE 126

<h4>Your Free CCcam Line is : </h4><br><table class="tg" width="80%" style="margin: 0 auto; border:1px solid;text- align:center"><tr><th class="tg-ahn8">Cline</th><th class="tg-juwk">C: s6.cccambird.com 18000 h2lkrik cccambird</th></tr><tr><td class="tg-ahn8">Host<br></td><td class="tg-juwk">s6.cccambird.com</td></tr><tr><td class="tg-ahn8">Port</td><td class="tg-juwk">18000</td></tr><tr><td class="tg-ahn8">User</td><td class="tg-juwk">h2lkrik</td></tr><tr><td class="tg-ahn8">Pass</td><td class="tg-juwk">cccambird</td></tr></table><br><br><h4>Expire On : 13-03-2019

je veux extraire une partie de ce texte

C: s6.cccambird.com 18000 h2lkrik cccambird
j'ai utilisé la commande sed

sed -n 's|.*<th class="tg-juwk">|\1|p' $FreeServertmpa70 > $FreeServertmpb70
les résultats que j'ai obtenus
C: s6.cccambird.com 18000 h2lkrik cccambird Hosts6.cccambird.comPort18000Userh2lkrikPasscccambirdExpire On : 13-03-2019

or je veux uniquement
C: s6.cccambird.com 18000 h2lkrik cccambird

  • # avec sed

    Posté par . Évalué à 2. Dernière modification le 13/03/19 à 06:35.

    Bonjour

    sed 's/.*<th class="tg-juwk">\(.*\)<\/th.*/\1/' $FreeServertmpa70 > $FreeServertmpb70

    Ou bien

    sed -E 's/.*<th class="tg-juwk">(.*)<\/th.*/\1/' $FreeServertmpa70 > $FreeServertmpb70
    • [^] # Re: avec sed

      Posté par . Évalué à 2. Dernière modification le 13/03/19 à 06:55.

      Pardon, je n'avais pris que la ligne extraire
      et pas le texte intégral la contenant

      sed -ne '/<th class="tg-juwk">/ s/.*<th class="tg-juwk">\(.*\)<\/th.*/\1/p' $FreeServertmpa70 > $FreeServertmpb70
      • [^] # Re: avec sed

        Posté par . Évalué à 1.

        Merci ca marche avec cette manip

        sed -ne '/<th class="tg-juwk">/ s/.*<th class="tg-juwk">\(.*\)<\/th.*/\1/p' $FreeServertmpa70 > $FreeServertmpb70

  • # Fuyez pauvres fous !

    Posté par . Évalué à 7. Dernière modification le 13/03/19 à 07:45.

    Salut :)

    C'est pas nouveau, mais rappelons-le : parser du html avec des regexp, c'est le mal.

    Il existe des outils spécifiques pour ça, comme ici (peut-être déjà packagés dans ta distribution).

  • # Algo

    Posté par . Évalué à 2.

    C'est pas très clair l'algorithme de recherche.

    Tu veux le contenu de la première ligne th class="tg-juwk" c'est ça ?

    Dans ce cas, je propose :
    - couper les lignes de HTML par début de tag '<'
    - chercher la première ligne contenant tg-juwk
    - ne garder que ce qu'il y a après '>'

    tr '<' '\n' | grep tg-juwk | head -n 1 | cut -d '>' -f 2

    En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

Suivre le flux des commentaires

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