IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Tableau et filtrage d'une liste d'url


Sujet :

Linux

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Points : 57
    Points
    57
    Par défaut Tableau et filtrage d'une liste d'url
    Bonsoir,

    Pourriez-vous m'aider à résoudre le pb suivant ?

    J'ai un fichier ini contenant une liste d'urls. Au démarrage du script, Je balaie le fichier et créé
    un tableau contenant toutes les url. Pour afficher ou consulter les urls à jour, il suffit de parcourir le tableau.

    Pour désactiver provisoirement une url, j'ajoute ";". Il faut donc ne traiter que les lignes commençant par "http".
    Deux solutions :
    (a) filtrer lors de la lecture du fichier ini.
    (b) importer toutesles lignes puis filtrer lors du parcours du tableau.

    (a)
    voici comment j'importe toutes les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    i=1
    #=============================================
    # Analyse le nombre de lignes du fichier ini
    #=============================================
    b=`cat "/EPG/$file" | wc -l`
    nbligne=$(($b+1))
    echo ______________________________
    echo "fichier.ini contient $nbligne lignes."
    echo
     
    #=============================================
    # Balayage du fichier ini ligne par ligne
    # et construction du tableau
    #=============================================
    while test $i -le $nbligne
    do
    urld[i]=`cat "/EPG/$file" | head -n $i `
    echo $i
    echo ${urld[i]}
    i=`expr $i + 1`    
    done
    exit
    Si je remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     urld[i]=`cat "/EPG/$file" | head -n $i `
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    urld[i]=`cat "/EPG/$file" | head -n $i | grep ^http  `
    Le filtre sed ne marche pas correctement. Retour de x fois l'url filtrée au lieu d'une :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    http://www.monsilte1/index.php
    http://www.monsilte/index.php
    http://www.monsilte/index.php
    http://www.monsilte/index.php
    (b)
    Je n'arrive pas à trouver la syntaxe permettant d'interroger l'une des "cases" du tableau (commande grep ?).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ${urld[i]} grep ^http ...
    Pourriez-vous m'aider à faire aboutir l'une ou l'autre des solutions ?

    D'avance merci .

    PS : des contraintes m'obligent à passer par un script bash, sinon j'aurai utilisé Perl

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Que donne ceci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if echo ${urld[i]} | grep '^http'....

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    Par défaut
    bonjour,

    pourquoi tu ne remplacerai pas ta boucle while avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    i=0 # ou i=1 ca depend du premier indice du tableau!
    for url in `cat "/EPG/$file" | grep ^http`
    do
    urld[i]=$ligne
    i=`expr $i +1`
    done
    la tu n as plus besoin du filtre sed!

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par insupien
    bonjour,

    pourquoi tu ne remplacerai pas ta boucle while avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    i=0 # ou i=1 ca depend du premier indice du tableau!
    for url in `cat "/EPG/$file" | grep ^http`
    do
    urld[i]=$ligne
    i=`expr $i +1`
    done
    la tu n as plus besoin du filtre sed!
    J'ai essayé ton code qui est est parfait (filtrage à la source), mais j'obtiens :
    "expr: erreur de syntaxe". Ai-je loupé quelque chose ?

    [EDIT]
    Le message d'erreur provenait de la ligne i=`expr $i ... , c'est corrigé.
    Après avoir remplacé "$ligne" par "$url", cela fonctionne parfaitement.

    Merci.

    @ripat,
    j'essaie aussi l'autre piste ...
    [EDIT]
    J'abandonne l'autre piste

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] [VBA]remplisage d'un tableau a partir d' une liste
    Par olivier370 dans le forum Excel
    Réponses: 2
    Dernier message: 24/08/2009, 11h13
  2. [MySQL] Affichage tableau en fonction d'une liste déroulante
    Par twa4ever dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/04/2009, 16h25
  3. Réponses: 9
    Dernier message: 07/08/2007, 15h36
  4. Réponses: 2
    Dernier message: 29/06/2007, 12h20
  5. Réponses: 12
    Dernier message: 27/03/2007, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo