Extraire des url d'un fichier

Résolu
Bonjour,


Je souhaite extraire d'un fichier, des url de type <a href='url.php?cs=1&ce=2&start=10'
sachant qu'une ligne peut en contenir plusieurs.
J'ai essayé le script suivant :
#!/bin/bash
args=$@
cat "$@" | { # so we can act as a filter

tr '<>"\47 ' '[\n*]' | sed -n -e "s/href=\'url.php?cs=//gI" -e 's/src=//gI' -e '/http:/Ip' > tmp_1

if [[ $tags == on ]]; then

    echo "<html><head><title>URLs extracted from: "${args}"</title></head><body>"
    while read line; do
       echo "<a href=\""${line}\"">"${line}"</a><br>"
    done < tmp_1
    echo "</body></html>"

else

    cat tmp_1

fi
}

ce script ne fonctionne pas bien car il ne ramène qu'une occurence par ligne alors qu'il y en a plusieurs.
et il ne tient pas compte de 'url.php?cs=

Ce que je cherche à faire est-il possible avec la commande sed et comment?

3 réponses

  1. salut,

    entre guillemets, le point d'interrogation est interprété par le shell, et non tel quel par sed.
    regarde si ça fonctionne
    's/href='\''url.php?cs=//gI'
    0
    1. Contributeur
      Salut,

      Avec un exemple plus concret de tes fichiers en entrée et des url's qu'ils contiennent ce serait peut être mieux... en attendant voici un exemple basé sur ton message :

      $ cat plop 
      Je souhaite extraire d'un fichier, des url de type <a href='url.php?cs=1&ce=2&start=1'
      sachant qu'une ligne peut en contenir plusieurs.
      Je souhaite extraire d'un fichier, des url de type <a href='url.php?cs=1&ce=2&start=2'
      sachant qu'une ligne peut en contenir plusieurs.
      Je souhaite extraire d'un fichier, des url de type <a href='url.php?cs=1&ce=2&start=3'
      sachant <a href='url.php?cs=1&ce=2&start=4' qu'une ligne peut en contenir plusieurs.
      Je souhaite extraire d'un fichier, des url de type <a href='url.php?cs=1&ce=2&start=5'
      sachant qu'une ligne peut en <a href='url.php?cs=1&ce=2&start=6' contenir plusieurs.
      Je souhaite extraire d'un fichier, des url de type <a href='url.php?cs=1&ce=2&start=7'
      sachant qu'une ligne peut en contenir plusieurs.
      Je souhaite extraire d'un fichier, des url de type <a href='url.php?cs=1&ce=2&start=8'
      sachant qu'une ligne peut en contenir plusieurs.
      Je souhaite extraire d'un fichier, des url de type <a href='url.php?cs=1&ce=2&start=9'
      sachant <a href='url.php?cs=1&ce=2&start=10' qu'une ligne peut en contenir plusieurs.
      Je souhaite extraire d'un fichier, des url de type <a href='url.php?cs=1&ce=2&start=11'
      sachant qu'une ligne peut en <a href='url.php?cs=1&ce=2&start=12' contenir plusieurs.
      
      $ cat plop | egrep -o "='[^']*'" | tr -d "=*'"
      url.php?cs1&ce2&start1
      url.php?cs1&ce2&start2
      url.php?cs1&ce2&start3
      url.php?cs1&ce2&start4
      url.php?cs1&ce2&start5
      url.php?cs1&ce2&start6
      url.php?cs1&ce2&start7
      url.php?cs1&ce2&start8
      url.php?cs1&ce2&start9
      url.php?cs1&ce2&start10
      url.php?cs1&ce2&start11
      url.php?cs1&ce2&start12
      
      $

      ;-))
      0
      1. Merci beaucoup, ça marche
        0