Extraire des url d'un fichier

Résolu
katwes07 Messages postés 2 Statut Membre -  
katwes07 Messages postés 2 Statut Membre -
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. Utilisateur anonyme
     
    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
  2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
  3. katwes07 Messages postés 2 Statut Membre
     
    Merci beaucoup, ça marche
    0