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 :

[regex]récuperer desinformation d'un fichier .txt


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut [regex]récuperer desinformation d'un fichier .txt
    Bonjour tout le monde,

    me voila avec une nouvelles question
    mon pbm pour l'instant est que j'ai un fichier .txt ou je récupère des réponses à l'interrogation d'un matériel.
    j'ai besoin dans un premier temps de votre conseil pour la façon de traiter le fichier.

    comme je l'ai dis c'est un fichier .txt qui regroupe des réponses à chaque fois il ya le début de la commande et après suivit par les réponses ( mon fichier de teste fais 450 ligne mais réellement il pourra faire beaucoup plus )
    vous aller le trouver en pièce jointe.
    merci d'avance.

  2. #2
    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
    http://www.developpez.net/forums/sho...d.php?t=309120
    Le script que j'ai écrit ouvre un fichier txt, le lit, y récupère des informations et les écrit dans un fichier de sortie.


    Jasmine,

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut
    merci d'abord pour ta réponse.
    j'ai déjà lu ce code et j' y me suis inspiré.
    j'ai un pseudo code pour le moment, mais mon pbm pour le moment et que mon fichier contient des réponses à des commande différentes et ces réponses je dois aller les chercher dans le fichier .txt (il faut que je fasse la regex ou je suis bloqué pour le moment) puis les insérer dans la BdD
    pour le moment j'ai pensé à ouvrir le fichier lire le fichier dès que je détecte le début d'un commande je lance le traitement concernant puis je récupère les information que j'envoi à la BDD dans une boucle While après refaire la même chose jusqu'à la fin du fichier est ce une bonne chose??
    voila mon pseudo code
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    #!/usr/bin/perl
    use strict; use warnings;
    use DBI;
    use CGI;
    my($cgi) = new CGI;
     
    #open the file
    my $basedir = 'C:/Documents and Settings/farid/Bureau/9cegetel/macro'; 
    open my($src),'<', "$basedir/ctrlsys_6hCB01_14.txt"
       or die "E/S : $!\n";
     
    #connection to database
    my $db = DBI -> connect (("dbi:mysql:dbname=tdm;host=localhost;","root","")) or die "connection impossible!";
     
    #ouvrir les fichier
    # detect the command
    # liste des commandes
    my @commands = qw(
      SRFIL
      ESMIN
      ALAIL
      GLRIL
      ANOIL
      NSSIN
      DMPIL
    );
    # construction de la regex pour reconnaître l'une de ces commandes en début de ligne (éventuellement après quelques espaces/tabulations) on capture la commande utilisée
    # aspect final de la regex : m/^\s*(SRFIL|ESMIN|...|DMPIL)/
    my $rx_string = join '|', map { quotemeta $_ } @commands;
    my $rx_commands = qr/^\s*($rx_string)/;
     
    si je detecte SRFIL je lance le traitement suivant
     
    		#extract the informations il faut prévoir la meme chose pour toutes les commandes.
    		regex = ( je ne sais pas encore)
    		#recuperation puis insertion d une donnee  if commande detecter est SRFIL relever les infos suivantes
    		my($ct) = $cgi->param("ct"); # je dois le récupèrer à partir du nom du fichier, le nom du fichier =trlsys_6h_CT_year_month_day.txt
    		my($date) = $cgi->param("date");# apartir des message par exemple: 07-05614
    		my($heure) = $cgi->param("heure");# a partir du message par exemple: 02 H 23 MN 53
    		my($evt) = $cgi->param("evt");# EVT="jusqu'à fin de ligne"
    		my($am) = $cgi->param("am");# AM = SMB3
    		my($etat) = $cgi->param("etat");# ETAT=BLOS
    		my($af) = $cgi->param("af"); #   AF=" jusqu'à fin de la ligne" des fois il n y'est pas  
    		my($msg) = $cgi->param("msg");#/ message en hexa sur plusieurs ligne le nombre deligne n'est pas connai à l'avance
     
    		# send them to the database
    		# je dois définir quel table de destination
    		$db->do("insert into client values ('$ct', '$date', '$heure', '$evt', '$am', '$etat', '$af', '$msg');")|| die "pb de requete : $DBI::errstr";
     
    si je detect ESMIN je fais le traitement 
    		......
    		......
    si je detecte ... #ainsi de suite jusqu'à faire tous les résultats
    close $src;

  4. #4
    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
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    #!/usr/bin/perl
    use strict; use warnings;
    use DBI;
    use CGI;
    my($cgi) = new CGI;
     
    #open the file
    my $InFile = 'P:/Perl/scripts/ctrlsys_6hCB01_14.txt';
     
     
    #connection to database
    # my $db = DBI -> connect (("dbi:mysql:dbname=tdm;host=localhost;","root","")) or die "connection impossible!";
     
    #ouvrir les fichier
    # detect the command
    # liste des commandes
    my @commands = qw(
      SRFIL
      ESMIN
      ALAIL
      GLRIL
      ANOIL
      NSSIN
      DMPIL
    );
     
    # Ouverture du fichier
    #------------------------
    open (FileTxt,"$InFile")  or die "Can't open file\n";
     
     
     
     
    # Lecture du fichier fasta
    #----------------------------------
     
    my $Ligne;
    while ($Ligne =<FileTxt>)
    {
     
            foreach my $motcle  (@commands)
            {
     
                    #SRFIL  00002   07-05-15 09-30-53
                    if($Ligne =~ /$motcle\s+(\d+)\s+(\d{2}\-\d{2}\-\d{2})\s+(\d{2}\-\d{2}\-\d{2})$/)
                    {
                            print "$motcle =>".$Ligne."\n";
                            my $ct = $1;
                            my $date = $2;
                            my $heure = $3;
                            print "ct= $ct\t date = $date\t heure = $heure\n\n\n";
                    }
            }
     
     
    }
     
     
     
     
    close;

    RESULTAT
    SRFIL => CMD SRFIL 00002 07-05-15 09-30-53

    ct= 00002 date = 07-05-15 heure = 09-30-53


    SRFIL => INP SRFIL 00002 07-05-15 09-30-53

    ct= 00002 date = 07-05-15 heure = 09-30-53


    ALAIL => CMD ALAIL 00003 07-05-15 09-31-45

    ct= 00003 date = 07-05-15 heure = 09-31-45


    ANOIL => CMD ANOIL 00004 07-05-15 09-31-48

    ct= 00004 date = 07-05-15 heure = 09-31-48


    ANOIL => INP ANOIL 00004 07-05-15 09-31-48

    ct= 00004 date = 07-05-15 heure = 09-31-48


    ANOIL => RES ANOIL 00004 07-05-15 09-31-48

    ct= 00004 date = 07-05-15 heure = 09-31-48


    ANOIL => RPT ANOIL 00004 07-05-15 09-31-48

    ct= 00004 date = 07-05-15 heure = 09-31-48


    NSSIN => CMD NSSIN 00005 07-05-15 09-38-41

    ct= 00005 date = 07-05-15 heure = 09-38-41


    NSSIN => INP NSSIN 00005 07-05-15 09-38-41

    ct= 00005 date = 07-05-15 heure = 09-38-41

    Voila t'as plus qu'à insérer en DB;

    Bon travail,


    Jasmine,

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut
    merci beaucoup jasmine
    ce n'est pas ça ce que je cherche exactement mais ça va m'aider beaucoup
    et je voudrai bien que tu m'explique omment t'as fais pour la regex c'est ma bette noir pour le moment de toute façon je vais passer un petit moment sur un petit cours que j'ai pour bien l'apprendre.
    MERCI

  6. #6
    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

Discussions similaires

  1. [Débutant] récuperer données enregistrées dans un fichier TXT
    Par asous dans le forum MATLAB
    Réponses: 4
    Dernier message: 06/11/2009, 12h06
  2. Récuperer certaines lignes dans un fichier txt
    Par forza262 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 08/10/2009, 16h26
  3. Récuperer des infos sur des fichiers .txt
    Par arnogb69 dans le forum VB.NET
    Réponses: 5
    Dernier message: 23/08/2007, 15h57
  4. récuperer les noms de fichiers pdf, word, Txt
    Par hervé_débutant dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/08/2007, 11h36
  5. Récuperer le contenu d'un fichier txt
    Par masterix59 dans le forum C
    Réponses: 2
    Dernier message: 12/01/2007, 12h02

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