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

Scripts/Batch Discussion :

Extraire des chaines de caractères dans un fichier


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Points : 14
    Points
    14
    Par défaut Extraire des chaines de caractères dans un fichier
    Bonjour,

    J'ai un fichier txt comme l'exemple ci-dessous. Celui ci contient un nombre de lignes aléatoire en fonction du jour.

    Je cherche à extraire (dans chaques lignes) la partie suivante "FR0000437865" et les envoyer vers un fichier (ex: toto.txt)
    Donc les parties commencant par FR et s'arretant avant le "UN"
    En gras dans la citation:
    0200903161235DPOD031 CDC-ECU
    12009031612 FR0000437865UN2EURUN2+000000000038368391+000000000000113433+
    12009031612 FR0000437865UN2EURUN2+000000000038368391+000000000000113313+
    12009031612 FR0000437865UN2EURUN2+000000000000000000+000000000000000120+
    12009031612 FR0007438155UN2EURUN2+000000000026390500+000000000000001103+
    J'ai essayé d'utiliser un peu toutes mes connaissances en DOS (pas très grande d'ailleur) en utilisant des FOR, FINDSTR etc, etc mais je n'arrive jamais au résultat voulu et je ne vois plus par ou commencer.

    Quelqu'un aurait une petite idée? Par ou commencer?
    Help PLZ

  2. #2
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "tokens=2 delims=U " %%a In ('findstr /rc:"\<FR" list.txt') do echo.%%a >>list.tmp

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    Enorme merci I'm_Here

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    Bonjour à tous,

    je reviens sur ce post afin de poser une nouvelle question.

    Existe-t-il une commande en DOS (je ne pense pas) ou autre permettant de comparer 2 fichiers et de m'être dans un 3ème seulement les lignes qui n'existe pas dans un des 2???

    Petit exemple qui serra plus explicite:

    Contenu du fichier A:

    Toto
    Tata
    Titi

    Contenu du fichier B:

    Toto
    Tata

    Je désire avoir dans le fichier C:

    Titi (celui manquant dans B)
    ou alors:

    Toto
    Tata (ceux présent dans A et B)

    Quelqu'un aurait une idée, une piste svp??

    Merci d'avance

  5. #5
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    salut,

    ensuite tu n'as qu'a filtrer le resultat obtenu

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    Merci.

    Par contre est-t-il possible de ne pas faire apparaitre dans le 3ème fichier

    Comparaison des fichiers a.txt et B.TXT
    ***** a.txt
    Toto
    ***** B.TXT
    *****


    Juste dans le 3ème fichier:
    Toto

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    Dernière question (promis la der des der )

    Dans un fichier j'ai 5 lignes identiques, je souhaite en supprimer 4 afin de ne pas avoir de doublon, cela est-il réalisable??

    Cdlt

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    Encore merci.

    Cela m'a énormement aidé!!!


  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    Je me heurte à un nouveau problème dans mon script.
    J'ai un fichier de référence nommé,par exemple, a.txt
    Celui ci contient:


    1
    2
    3
    4
    5
    6
    Je souhaite le comparer à un autre fichier b.txt qui contient, par exemple:


    1
    2
    29
    32
    4
    5
    je souhaite mettre dans un 3ème fichier que les ligne de b.txt qui existe dans a.txt
    En gros dans le 3ème fichier, il y aurait:


    1
    2
    4
    5
    Connais tu une astuce?

    En tout cas, encore un grand merci a toi

  10. #10
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    a.txt
    ------
    b.txt
    ------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    findstr /g:b.txt a.txt >3.txt

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    Cela fonctionne parfaitement. Sauf que (c'est de ma faute je n'ai pas été clair dans ma demande), il s'agit dans mes fichiers de chaines de caractère
    toujours du type FR0000437865.

    Et cela ne fonctionne donc pas

  12. #12
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    j'ai fais un fichier a.txt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    FR4782437862
    FR5000437863
    FR0000437865
    FR4010437856
    FR0014437885
    FR8800437841
    FR0999437896
    FR0000437862
    FR0000437861
    FR7000437867
    FR0010439856
    FR0014438885
    FR8800427841
    FR8999437896
    et un autre b.txt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    FR0000437862
    FR9999437961
    FR5000437863
    FR8888437862
    FR0000437865
    avec le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    findstr /g:b.txt a.txt >b.tmp
    et ça retourne le bon resultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FR5000437863
    FR0000437865
    FR0000437862

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    effectivement dans mon fichier de reférence il y avait des espaces en fin de lignes. C'est pour cela que je n'y arrivais pas.

    J'en reviens à ma toute première question

    0200903161235DPOD031 CDC-ECU
    12009031612FR0000437865UN2EURUN2+000000000038368391+000000000000113433+
    12009031612FR0000437865UN2EURUN2+000000000038368391+000000000000113313+
    12009031612FR0000437865UN2EURUN2+000000000000000000+000000000000000120+
    12009031612FR0007438155UN2EURUN2+000000000026390500+000000000000001103+
    je veux toujours extraire les lignes FR0007438155 mais cette fois ci il n'y a pas d'espace avant le F.

    J'ai essayé de modifier la ligne de commande que tu m as donnée mais je n'y arrive pas.

  14. #14
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "tokens=2 delims=FU" %%a In ('find "FR"^<list.txt') do echo.F%%a

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    Merci.

    Je dois mal utiliser la commande

    J'aimerai tout comme dans la premiere question que le tout soit redirigé vers un autre fichier.

    En gros dans mon fichier a.txt j'ai
    0200903161235DPOD031 CDC-ECU
    12009031612FR0000437865UN2EURUN2+000000000038368391+000000000000113433+
    12009031612FR0000437865UN2EURUN2+000000000038368391+000000000000113313+
    12009031612FR0000437865UN2EURUN2+000000000000000000+000000000000000120+
    12009031612FR0007438155UN2EURUN2+000000000026390500+000000000000001103+

    et donc le resultat dans un fichier b.txt
    FR0000437865
    FR0000437865
    FR0000437865
    FR0007438155

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Points : 14
    Points
    14
    Par défaut
    Je viens de voir le problème
    dans la commande
    for /f "tokens=2 delims=FU" %%a In ('find "FR"^<list.txt') do echo.F%%a
    Je mets à la place de list.txt une * car il s'agit en faite de faire cette opération sur un nombre indéfini de fichier.

    L'étoile semble poser probleme


    Tu connais une astuce pour effectuer cette commande sur tous les fichiers TXT d'un repertoire?

  17. #17
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    Citation Envoyé par cycy75 Voir le message
    il s'agit en faite de faire cette opération sur un nombre indéfini de fichier.
    adaptez-le à votre besoin, maintenant j'ai plus de temps..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for %%A In (*.txt) do for /f "tokens=2 delims=FU" %%a In ('find "FR"^<"%%A"') do echo.F%%a

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/08/2011, 10h26
  2. Réponses: 6
    Dernier message: 15/05/2008, 15h20
  3. [VB]Recherche d'une chaine de caractère dans un fichier
    Par Empty_body dans le forum VB 6 et antérieur
    Réponses: 26
    Dernier message: 16/02/2006, 09h10
  4. Ecriture d'une chaine de caractères dans un fichier
    Par fleur_de_rose dans le forum MFC
    Réponses: 6
    Dernier message: 10/02/2006, 09h34

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