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

VBA Discussion :

Recherche de mots dans un fichier texte


Sujet :

VBA

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 12
    Points : 11
    Points
    11
    Par défaut Recherche de mots dans un fichier texte
    Bonsoir,

    J'ai un fichier texte dans lequel je souhaite récupérer deux mots : Tata et Toto.
    Tata se trouve à la ligne numéro i du fichier et Toto est toujours à la ligne i+3 c'est-à-dire Toto est toujours à la troisième ligne à celle de Tata.
    Lle but est de mettre le mot Tata dans une variable V1 et Toto dans V2.

    Merci de votre aide !

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 262
    Points
    12 262
    Par défaut
    tu peux utiliser grep pour charger la variable...

    genre

    var=$(grep "toto" fichier) # pour conserver la ligne complête
    si tu veux que le mot toto

    var=$(sed '/toto/!d ; s/.* \(toto\) .*$/\1/' titi) # pour conserver que le mot 'toto'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ cd /tmp                                                                       
    $ cat > titi                                                                    
    dsfjhgdfkgs                                                                     
    gsdkghsdghs                                                                     
    sdfgds toto sddfsgf                                                             
    sdfglfdgjsdl                                                                    
    sdfglfsd                                                                        
    $ var=$(grep "toto" titi) ; echo $var                                           
    sdfgds toto sddfsgf 
    $ var=$(sed '/toto/!d ; s/.* \(toto\) .*$/\1/' titi) ; echo $var                
    toto                                                                            
    $  
    $ unset var ; rm titi

  3. #3
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ cat plop 
    blabla
    blibli
    tata
    blublu
    bloblo
    toto
    blybly
    bleble
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ V1=$(sed -n '3p' plop);V2=$(sed -n '3 {n;n;n;p}' plop) 
     
    $ echo ${V1}
    tata
     
    $ echo ${V2}
    toto

  4. #4
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Une alternative avec "ed" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ ed -s plop <<<$'3p'
    tata
     
    $ ed -s plop <<<$'3+3p'
    toto

  5. #5
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 262
    Points
    12 262
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ cat plop 
    blabla
    blibli
    tata
    blublu
    bloblo
    toto
    blybly
    bleble
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ V1=$(sed -n '3p' plop);V2=$(sed -n '3 {n;n;n;p}' plop) 
     
    $ echo ${V1}
    tata
     
    $ echo ${V2}
    toto
    sauf si y'a d'autres mots sur la même ligne ça marche plus


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $ cat titi                                                                      
    asdfsdgfdsgfg                                                                   
    gsdfgsdfgfsg                                                                    
    toto                                                                            
    sfdfsdfsdfd                                                                     
    fsdfsd titi                                                                     
    fsdfsdf                                                                         
     
     
    $ V2=$(sed -n '3 {n;n;n;p                                                       
    > }' titi)                                                                      
    $ echo $V2                                                                      
    fsdfsdf                                                                         
    $

    mais sinon oui c'est plus simple de faire comme ça si il y a qu'un mot et que l'emplacement est connu pour le second.

  6. #6
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par frp31 Voir le message
    sauf si y'a d'autres mots sur la même ligne ça marche plus

    mais sinon oui c'est plus simple de faire comme ça si il y a qu'un mot et que l'emplacement est connu pour le second.
    C'est clair, mais comme nous sommes toujours dans le même contexte, c'est à dire avec un minimum d'informations, donc on extrapole et le risque de plantage est d'autant plus grand

  7. #7
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 309
    Points : 12 817
    Points
    12 817
    Par défaut
    Bonjour,

    Une autre façon de faire :

    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
    $ echo $X
     
    $ echo $Y
     
    $ cat initial.txt
    Les valeurs importantes sont 1 et 2
    Les parents importants sont papa et maman
    Les outils textuels importants sont sed et awk
    arrête les exemples et fadaises
    $ read X Y <<<`sed -n "1s/.*\(valeurs\).*/\1/p;4s/.*\(exemples\).*/\1/p" initial.txt`
    $ echo $X
    valeurs
    $ echo $Y
    exemples
    $
    En considérant que comme on sait que le premier mot se trouve à une ligne donnée (ici 1), on sait que le deuxieme mot se trouve 1+3 = 4, ce que caractérise les 1s et 4s de la commande sed.

    Cordialement.

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par jalons Voir le message
    J'ai un fichier texte dans lequel je souhaite récupérer deux mots : Tata et Toto.
    Tata se trouve à la ligne numéro i du fichier et Toto est toujours à la ligne i+3 c'est-à-dire Toto est toujours à la troisième ligne à celle de Tata.
    Lle but est de mettre le mot Tata dans une variable V1 et Toto dans V2.

    Merci de votre aide !
    Moi, je dis qu'il y a un algorithme beaucoup plus simple que toutes vos complexeries et qui respecte scrupuleusement les spécifications détaillées fournies:

    Hé! hé!

    PS: si ça va pas, faut demander à bomonde...

  9. #9
    Invité
    Invité(e)
    Par défaut
    J'aurais fait avec des head et des tail XD
    Il faudrait avoir un exemple du fichier pour mieux répondre. Que contient la ligne i ? Juste toto ou autre chose?

Discussions similaires

  1. Rechercher un mot dans un fichier texte
    Par elscorpio dans le forum VB.NET
    Réponses: 3
    Dernier message: 02/06/2014, 17h04
  2. Réponses: 4
    Dernier message: 09/10/2011, 16h17
  3. Réponses: 2
    Dernier message: 29/07/2010, 21h58
  4. Recherche, découpage de 'mots' dans un fichier texte
    Par sbibi dans le forum Scripts/Batch
    Réponses: 16
    Dernier message: 21/01/2010, 14h26
  5. recherche de doublons dans un fichier texte
    Par portu dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 07/10/2003, 14h13

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