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 :

Comment différencier un mot d'un autre ?


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 3
    Par défaut Comment différencier un mot d'un autre ?
    Bonjour,

    C'est une question qui me semble simple mais je n'arrive pas à m'en sortir.
    J'ai besoin de recopier une partie d'un fichier dans un autre. Je pars donc d'un endroit en sélectionnant un mot. Or ce mot en a un identique plus tôt dans le fichier.

    Comment puis-je sélectionner le 2ème plutôt que le 1er s'il vous plaît ?

    Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mars 2015
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2015
    Messages : 138
    Par défaut
    Une façon simple de répondre au besoin en utilisant un compteur qu'on incrémente si on rencontre le mot désiré, ici 'start'.
    Quand le compteur vaut 2, un bloc contient les instructions à exécuter, ici, juste une sortie écran, mais tu pourras y placer le code de sortie vers un fichier.

    DATA est un descripteur de fichier qui permet de définir du contenu en fin de script.

    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
    23
    24
    25
    26
    27
    28
    29
    30
    #!/usr/bin/env perl
    use strict;
    use warnings;
    use feature 'say';
     
    my $compteur = 0;
     
    while ( my $record = <DATA> ) {
       chomp $record;
       $compteur++ if $record =~ /start/;
     
       if ( $compteur >= 2 ) {
           # code de sortie vers autre fichier
           say $record;
       }
    }
     
    __DATA__
    aaaaaaaaaa
    bbbbbbbbbb
    cccccccc start
    dddddddddd
    eeeeeeeeee
    ffffffffff
    gggggggggg start
    hhhhhhhhhh
    iiiiiiiiii
    jjjjjjjjjj
    kkkkkkkkkk
    llllllllll
    Sortie écran :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     ./copy_file_part.pl
    gggggggggg start
    hhhhhhhhhh
    iiiiiiiiii
    jjjjjjjjjj
    kkkkkkkkkk
    llllllllll

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 3
    Par défaut
    OK je vais tester ça et je vous fais un retour.
    Merci en tout cas.

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Bonsoir,

    très bien la version de ptonnerre.

    Juste pour le fun, une version plus brève:
    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
    23
    24
     
    use strict;
    use warnings;
     
    for (1..2) {
        while (<DATA>) {
            last if /start/;
        }
    }
    print while <DATA>; 
     
    __DATA__
    aaaaaaaaaa
    bbbbbbbbbb
    cccccccc start
    dddddddddd
    eeeeeeeeee
    ffffffffff
    gggggggggg start
    hhhhhhhhhh
    iiiiiiiiii
    jjjjjjjjjj
    kkkkkkkkkk
    llllllllll
    Ce qui imprime:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $ perl test_start.pl
    hhhhhhhhhh
    iiiiiiiiii
    jjjjjjjjjj
    kkkkkkkkkk
    llllllllll
    A noter cependant que ce script n'imprime que les lignes après le second start (autrement dit pas la ligne avec le second start).

  5. #5
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Et, toujours pour le fun, une version encore un peu plus concise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    use strict;
    use warnings;
     
    for (1..2) {
        while (<DATA> !~ /start/) {};
    }
    print while <DATA>;

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 3
    Par défaut
    C'est bon ça fonctionne.
    J'ai pris le dernier script de Lolo78 et ça fonctionne à merveille.
    Merci à vous.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/05/2017, 12h54
  2. Réponses: 4
    Dernier message: 28/02/2012, 16h48
  3. Réponses: 2
    Dernier message: 22/10/2007, 17h50
  4. Réponses: 2
    Dernier message: 09/07/2003, 14h10
  5. Comment subsituer un chemin par un autre dans un réseau ?
    Par Baillard dans le forum Développement
    Réponses: 3
    Dernier message: 11/08/2002, 14h01

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