Forum Programmation.shell Extraire des données d'une page youtube

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
-1
8
avr.
2021

bonjour….je veux extraire une partie de texte d'une page youtube pour avoire la ligne suivante
free.cccam.net 21776 cccamtv.net 1758624

mait le caractère suivie de n me complique la tache avec sed

        sed -i 's#\nPORT : # #g' $fichier
                    ou
        sed -i 's#\nPORT : ##' $fichier

ne supprime pas et mon fichier ne change pas

txt please share it and SUBSCRIBE! Watch also our other videos!\n\nHOST : free.cccam.net\nPORT : 21776\nUSER : cccamtv.net\nPASS : 1758624\nPlease like the video for Support Thank You Great People\n---------------------------------\nhttps://cccam.net\n-------

  • # sed

    Posté par  . Évalué à 3. Dernière modification le 08 avril 2021 à 10:48.

    sed est un outil qui travaille ligne par ligne
    le caractère '\n' indique une nouvelle ligne donc 's#\nPORT : ##' ne matchera rien de ce que tu lui donnes en entrée.
    Je crois me souvenir qu'il est possible de concaténer des lignes avant de travailler dessus, mais je ne me souviens plus comment.
    si ça peut t'aider, voici le manuel de référence que je lis et relis pour l'utilisation de sed: https://www.grymoire.com/Unix/Sed.html

    • [^] # Re: sed

      Posté par  . Évalué à 2.

      j'ajouterais que si ca vient d'une page web, il ne devrait pas y avoir de \n mais plutot des </br>

      ce qui voudrait dire que le mino60 a deja fait un traitement pour virer les balises html.
      dans ce cas, ne pas remplacer le </br> par \n devrait mettre le fichier sur une ligne et permettre à sed de fonctionner

  • # et...

    Posté par  . Évalué à 2.

    Bjr.

    Et si tu vois effectivement des "\n" dns un fichier plutot que des sauts de ligne, la correspondance est "\\n".

    ++
    Gi)

    • [^] # Re: et...

      Posté par  . Évalué à -4.

      J'ai trouver la solution avec awk

      cat $fichier | awk -F "HOST : " '/HOST/ {print $2}' | sed -e 's|PORT :||' -e "s|USER :||" -e "s|PASS :||" -e 's/\\n//g' -e "s|Please.*||"

  • # Extraire des données d'une page youtube

    Posté par  . Évalué à -4.

    J'ai trouver la solution avec awk

    cat $fichier | awk -F "HOST : " '/HOST/ {print $2}' | sed -e 's|PORT :||' -e "s|USER :||" -e "s|PASS :||" -e 's/\\n//g' -e "s|Please.*||"
    
  • # ça marche chez moi

    Posté par  (site web personnel, Mastodon) . Évalué à 2.

    Ta demande n'est pas très claire, en tout cas je ne vois personnellement pas le problème

    $ cat fichier
    txt please share it and SUBSCRIBE! Watch also our other videos!\n\nHOST :     free.cccam.net\nPORT : 21776\nUSER : cccamtv.net\nPASS : 1758624\nPlease     like the video for Support Thank You Great     People\n---------------------------------\nhttps://cccam.net\n-------
    $ sed 's#\nPORT : # #g' fichier 
    txt please share it and SUBSCRIBE! Watch also our other videos!\n\nHOST :     free.cccam.net\nPORT : 21776\nUSER : cccamtv.net\nPASS : 1758624\nPlease     like the video for Support Thank You Great     People\n---------------------------------\nhttps://cccam.net\n-------
    $ # normal, il n'y a pas de saut de ligne...
    $ sed 's#\\nPORT : # #g' fichier 
    txt please share it and SUBSCRIBE! Watch also our other videos!\n\nHOST :     free.cccam.net 21776\nUSER : cccamtv.net\nPASS : 1758624\nPlease     like the video for Support Thank You Great     People\n---------------------------------\nhttps://cccam.net\n-------
    $ # et sinon...
    $ grep -Eo ' (free\.cccam\.net|cccamtv\.net|[0-9]+)' fichier | tr -d '\n'
     free.cccam.net 21776 cccamtv.net 1758624
    

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

Suivre le flux des commentaires

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