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

Langage Perl Discussion :

récupération de plusieurs lignes successives dans un fichier


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut récupération de plusieurs lignes successives dans un fichier
    J'aimerais récupérer la ligne de mon match ainsi que les 8 lignes suivantes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while($ligne = <AutoDim>){
        if($ligne =~ /41.*337/){
            $index = 0;
        }
        if($index < 9){
            print $ligne;
        }
        $index ++;
    }
    Y aurait-il une meilleure façon de procéder en utilisant $. ou autre?


    Merci,

  2. #2
    Membre expérimenté Avatar de CKLN00
    Homme Profil pro
    Bioinformaticien Java/Perl
    Inscrit en
    Avril 2008
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Bioinformaticien Java/Perl
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 210
    Par défaut
    et une regExp genre
    m/41.*337(.*\n){9}/x
    ça peut pas fonctionner ?

  3. #3
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    non, cela ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($ligne =~ /(Chlamydia_pecorum_41|Staphylococcus_aureus_339).*(Staphylococcus_aureus_337|Chlamydia_pecorum_41)/)
    Comment puis-je faire mes 'ou' sans parenthèses (car je ne dois pas récupérer $1 ni $2 mais toute la ligne)? Si j'utilise les crochets et que j'espace mes 2 solutions, l'espace sera une des possibilité du match. Si je ne mets que la barre (pipe |), les groupes de possibilités ne seront pas corrects.


    Merci pour ton aide,

  4. #4
    Membre expérimenté Avatar de CKLN00
    Homme Profil pro
    Bioinformaticien Java/Perl
    Inscrit en
    Avril 2008
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Bioinformaticien Java/Perl
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 210
    Par défaut
    heeeuuu j'ai pas tout saisi xD !

    tu n'arrive pas à determiner un bon pathern ?
    oublit pas que tu peut imbriquer des groupe de () les unes dans les autres
    exmple
    /(((ceci) (est)) ((un) (match) (patern)))/

    $1 = ceci est un match patern
    $2 = ceci est
    $3 = ceci
    $4 = est
    $5 = un match patern
    $6 = un
    $7 = match
    $8 = patern

  5. #5
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Non, je n'ai pas oublié mais c'est juste que je place des parenthèses sans avoir besoin de récupérer leur contenu vu que je garde $ligne en entier.

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    pour que perl ne capture pas ce qui est entre parenthèse, on place ?: en début de parenthèse.
    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my $phrase = "bonjour jasmine";
    my ($nom) = $phrase =~ m{^(?:bonjour|bonsoir)\s+(\w+)}i;
    print "$nom\n";

  7. #7
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Merci Djibril, je vais utiliser ?:


    Mais il me reste toujours la question du premier post : y aurait-il une meilleure façon de procéder en utilisant $. ou autre?

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

Discussions similaires

  1. Fusion de plusieurs lignes lues dans un fichier CSV
    Par M E H D I dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 28/12/2011, 11h49
  2. Réponses: 2
    Dernier message: 18/05/2006, 13h38
  3. Réponses: 7
    Dernier message: 23/04/2006, 23h07
  4. Réponses: 4
    Dernier message: 02/07/2004, 19h14
  5. Réponses: 6
    Dernier message: 04/03/2004, 09h35

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