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

Shell et commandes GNU Discussion :

Parcourir un fichier log ligne par ligne et comparer des valeurs precises de chaque ligne


Sujet :

Shell et commandes GNU

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Mai 2011
    Messages : 192
    Points : 250
    Points
    250
    Par défaut Parcourir un fichier log ligne par ligne et comparer des valeurs precises de chaque ligne
    Bonsoir chers membres éminents chrevronnés du bash

    Alors je viens vers vous aujourd'hui car j'ai un blocus sur un script bash que j'aimerai écrire. Je ne me suis pas vraiment orienté dans l'écriture de scripts bash Linux et j'aimerai pourtant en créer un afin d'analyser un fichier. Je pense m'y pencher plus sérieusement après ça.

    Alors, j'aimerais parcourir un fichier ligne par ligne et les comparer. Cependant, je dois comparer certaines valeurs sur des champs precis de chacune des lignes, c'est à dire comparer la ligne courante à la suivante et ainsi de suite. Voici mon fichier

    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
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |manger| -
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |dormir| -
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |rever| -
    mardi, 25 Decembre 2017 20:10:23 Paris|Fabrice| - |manger| -
    mardi, 25 Decembre 2017 20:40:13 Strasbourg|Paul| - |manger| -
    mardi, 25 Decembre 2017 21:05:23 Dakar|Paul| - |dormir| -
    mardi, 25 Decembre 2017 21:05:23 Dakar|Paul| - |rever| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |manger| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |manger| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |dormir| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |rever| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |manger| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |dormir| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |parler| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |rever| -
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |manger| -
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |dormir| -
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |rever| -
    En gros, voila mon fichier. Il affiche les noms de certaines personnes à des heures précises éxecutant une action précise. Ce que je veux c'est afficher les personnes qui éxecutent les actions manger, dormir, rever de façon successive à la même heure dc par exple Charles, Christian et Arno. Aucune autre action ne doit s'interposer entre elles comme c'est le cas de Benjim ou Paul (dont lheure nest pas la même pour les 3 actions)

    j'ai parcouru le forum et je suis tombé sur des sujets comme ce tuto pr parcourir un fichier ligne par ligne rédigé par le membre éminent N_Bah ou encore ce sujet qui explique comment couper un texte selon des critères mais cela ne m'a pas aidé peut être parce que je m'y prends mal.

    Alors, jai pensé créer un fichier qui devait contenir les heures uniquement que je pourrai utiliser pr comparer avec le fichier initial. Mais le soucis que j'ai c'est au niveau de l'implémentation car l'idée c'est de s'arreter et lire la 1ere ligne pour enregistrer les infos, ensuite aller à la ligne suivante pour comparer les valeurs, si c'est différent, enregistrer donc la valeur de la seconde ligne que j'irai comparer à celle de la 3e ligne etc. Par contre avec la procedure simple de la boucle while suivi de read, je n'ai pas le temps de traiter ligne par ligne sauf si je my prend mal . Raison pour laquelle je viens auprès des chevronnés de scripts tels que vous .

    Je vous remercie d'avance pour votre temps

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 551
    Points : 19 385
    Points
    19 385
    Par défaut
    Bonjour,

    avec la procedure simple de la boucle while suivi de read, je n'ai pas le temps de traiter ligne par ligne
    qu'est-ce que tu veux dire ?
    s'il n'y a pas d'informations enregistrées, c'est que tu es sur la première ligne, alors il faut enregistrer les données, et passer à la suivante.
    lors de la lecture des lignes suivantes, des informations ont été enregistrées, donc tu peux comparer les données de la ligne courante avec les informations enregistrées.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Mai 2011
    Messages : 192
    Points : 250
    Points
    250
    Par défaut
    Merci pour ton intervention.

    qu'est-ce que tu veux dire ?
    En fait les scripts donnés m'affichent en résultat les lignes du fichier et ce n'est pas ce que je veux.

    s'il n'y a pas d'informations enregistrées, c'est que tu es sur la première ligne, alors il faut enregistrer les données, et passer à la suivante.
    En effet, lorsque je suis sur la première ligne, j'aimerai enregistrer lheure que je vais comparer à celle de la ligne suivante mais je ne sais pas comment car la commande awk ou cut prend les heures sur la colonne entiere (donc de toutes les lignes) et non pas sur la 1ere ligne uniquement. Donc ya t-il un moyen de croiser ligne et colonne pour recuperer uniquement la valeur que je veux? Mon idée n'est pas peut être pas la bonne, peut-être en avez-vous une meilleure. Au départ je pensais que le mieux serait de comparer les lignes entieres, mais étant donner les actions (manger, dormir, rever) qui doivent pas être identiques et que je dois peut être séparer avant la comparaison, alors je me dis que ca peut fausser le résultat.
    lors de la lecture des lignes suivantes, des informations ont été enregistrées, donc tu peux comparer les données de la ligne courante avec les informations enregistrées.
    N'étant pas un génie du bash, je t'avoue que n'ayant pas utilisé une variable pour le faire, je ne sais pas comment m'y prendre dans ce cas.
    Vous constaterez que je parle beaucoup plus sur la manière d'aborder le problème sans vous pondre le code. Ceci est dû au fait que je pense que la méthode (ou lalgo ) qui me vienne ne soit pas du tout bonne, c'est pourquoi j'aimerai d'abord avoir votre avis sur la bonne logique pour aborder ce problème et pour ce faire, je vous explique ce que je veux:

    En fait je veux pouvoir ressortir les noms des utilisateurs qui ont effectué successivement les action manger, dormir, rever à la même heure et ce sont les utilisateurs Charles, Christian et Arno dans le cas du fichier exemple. Mon fichier peut être plus long que celui-ci. Donc je veux pouvoir faire un script qui pourrait me lister les noms des personnes repondant à ces critères car je ne connaitrai pas toujours d'avance l'heure ou les noms des concernés dans le fichier pour une identification manuelle à cause de sa longueur.

    Cordialement

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 551
    Points : 19 385
    Points
    19 385
    Par défaut
    il n'y a pas lieu de faire appel à awk ou cut (je l'ai montré dans le tuto que tu cites).
    Citation Envoyé par NBaH
    Il est possible de découper la ligne en autant de variables que nécessaire.
    N'étant pas un génie du bash, je t'avoue que n'ayant pas utilisé une variable pour le faire, je ne sais pas comment m'y prendre dans ce cas.
    vas-y pas à pas.
    fais des petits essais pour assimiler la syntaxe du shell. il n'y a qu'en pratiquant que tu apprendras.

    un algorithme, ça ne s'écrit pas*, ça se dessine.

    quelle est la première information à comparer ? quelle est l'information, sur une ligne, qui fera qu'on sera sûr de devoir faire d'autres comparaisons, ou s'il faut passer à la ligne suivante ?

    *d'accord, ça s'écrit, mais avec du pseudo-code, pas comme une rédaction, et d'abord, on dessine un "arbre de décision".
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Mai 2011
    Messages : 192
    Points : 250
    Points
    250
    Par défaut
    il n'y a pas lieu de faire appel à awk ou cut (je l'ai montré dans le tuto que tu cites)
    Pour lire les lignes en effet
    vas-y pas à pas.
    fais des petits essais pour assimiler la syntaxe du shell. il n'y a qu'en pratiquant que tu apprendras.
    c'est ce que je fais en effet, merci
    un algorithme, ça ne s'écrit pas*, ça se dessine.
    Bon, dans mon cas, je voulais surtout parler du procédé ou du cheminement à suivre que vous pouvez me conseiller pour resoudre le problème par rapport à celui que je vous ai proposé.
    quelle est la première information à comparer ? quelle est l'information, sur une ligne, qui fera qu'on sera sûr de devoir faire d'autres comparaisons, ou s'il faut passer à la ligne suivante ?
    Je pense en effet que c'est ici qu'il y a tout mon blocus déjà et donc j'aimerai votre point de vue. En fait voici le procéde en espérant bien expliquer. Dans mon script bash, je dois ressortir les personnes qui respectent ces criteres:
    - avoir éxecuté les actions (manger, dormir, rever) dans la même seconde, minute et heure (les 3 actions doivent être effectuées dans la seconde de la minute+heure);
    - avoir executé les actions (manger, dormir, rever) successivement l'une après l'autre sans aucune autre action intermédiaire entre elles.

    C'est pourquoi je pense qu'après traitement de mon fichier, je dois avoir en resultat les noms Charles, Christian (léger doute) et Arno parce que:
    - à 19:50:50 exactement, Charles éxecute successivement les actions manger, dormir et rêver (pas réaliste je sais mais c'est un exemple )
    - à 22:35:53 exactement; Christian execute successivement les actions
    - à 23:45:54 exactement, Arno execute aussi successivement les mêmes actions

    Donc dans une première reflexion, je me disais que je dois comparer les temps de la 1ere ligne à la 2e pour voir s'ils sont identiques, si c'est le cas je dois voir si les personnes correspondent aussi, ensuite verifier que l'action du 1er temps est manger, celui du 2e est dormir et celui du 3e rever comme ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |manger| -
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |dormir| -
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |rever| -
    Si jamais les temps ne sont pas les mêmes, alors je passe à la ligne suivante que je dois comparer avec celle qui la suit en suivant le même procédé et ainsi de suite comme ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mardi, 25 Decembre 2017 20:10:23 Paris|Fabrice| - |manger| -
    mardi, 25 Decembre 2017 20:40:13 Strasbourg|Paul| - |manger| -
    mardi, 25 Decembre 2017 21:05:23 Dakar|Paul| - |dormir| -
    mardi, 25 Decembre 2017 21:05:23 Dakar|Paul| - |rever| -
    Cependant, il m'a semblé que cela soit long, car je me suis rendu compte que les lignes qui respectent les critères sont quasi-idem à la difference des actions qui doivent se suivre. Donc du coup je pensais à comparer entièrement les lignes qui se suivent mais je ne sais pas comment faire (comparer) de l'action (dernier champs) qui forcement ne doit pas être le même dans la mesure ses critères sont spécifiques donc jamais idem. Dois-je l'extraire au moment de comparer les lignes? C'est pourquoi je vous sollicitais dans un premier temps sur la compréhension et la méthodologie avant de passer au script en lui même. Par exemple on voit bien que tout ce qui change c'est l'action et les autres champs sont idem
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |manger| -
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |dormir| -
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |rever| -
    Merci d'avance pour le temps que vous me consacrez et consacrerez

    EDIT: J'ai modifié les critères que doivent respecter mon script bash pour ajouter de nouveau éléments

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 551
    Points : 19 385
    Points
    19 385
    Par défaut
    l'exposé laisse croire qu'il y a une information à comparer avant l'autre, mais en fait non, c'est le couple "date/lieu"-"personne" qu'il faut comparer entre la ligne courante et la ligne précédente.

    ensuite, comment penses-tu gérer que "rever" doit apparaître après "dormir", qui doit, lui, être apparu après "manger" afin d'afficher le nom de la personne ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    je reviens rapidement sur le cas de Paul, qu'est-ce qui fait qu'il n'est pas éligible, le fait que la ville change entre deux actions ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mardi, 25 Decembre 2017 20:40:13 Strasbourg|Paul| - |manger| -
    mardi, 25 Decembre 2017 21:05:23 Dakar|Paul| - |dormir| -
    mardi, 25 Decembre 2017 21:05:23 Dakar|Paul| - |rever| -
    concernant l'algo, si tu as déjà regardé Question pour un champion le principe peut être le même, on lit chaque ligne et on la stocke pour pouvoir la comparer avec la ligne suivante quand elle sera lue, pour valider il suffit de partir d'un score = 0, à chaque fois qu'on rencontre une étape juste (comme "ligne précédente = manger ET ligne actuelle = dormir" par exemple) on incrémente le score, si l'étape est fausse on retombe à 0

    ça se fait très bien en bash, mais awk est effectivement un outil de choix pour ce genre de problématique

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    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 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    je reviens rapidement sur le cas de Paul, qu'est-ce qui fait qu'il n'est pas éligible, le fait que la ville change entre deux actions ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mardi, 25 Decembre 2017 20:40:13 Strasbourg|Paul| - |manger| -
    mardi, 25 Decembre 2017 21:05:23 Dakar|Paul| - |dormir| -
    mardi, 25 Decembre 2017 21:05:23 Dakar|Paul| - |rever| -
    D'après les spécifications fournies, àmha, c'est plutôt le fait que les actions "manger" et "rever" n'ont pas lieu dans la même seconde.

    Concernant l'algorithme, si on part du fait que tout sauf l'action doit être identique d'une ligne à l'autre, et que les actions sont fixes, je ferais ainsi (en bash ou en awk):
    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
    ligne_suivante_attendue := "rien"
     
    Pour chaque ligne_courante, avec le "|" comme séparateur de champs
      si le 4ème champ == "manger"
      alors ligne_suivante_attendue := ligne_courante avec remplacement du 4ème champ "manger" par "dormir"
     
      sinon si ligne_courante != ligne_suivante_attendue
      alors ligne_suivante_attendue := "rien"
     
      sinon # on a trouvé la ligne suivante attendue
         suivant que le 4ème champ est:
            "dormir":
               alors ligne_suivante_attendue := ligne_courante avec remplacement du 4ème champ "dormir" par "rever"
     
            "rever":
               alors # on a trouvé un bon candidat
                 ligne_suivante_attendue := "rien"
                 imprimer le 2ème champ
     
          fin suivant que
      fin si
    fin pour chaque ligne_courante

  9. #9
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    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
     
    # cat quiquandquoi.awk
    {
            PlQui=$1
            PlQuoi=$2
     
            getline Sl
            split(Sl,TabSl)
     
            getline Tl
            split(Tl,TabTl)
     
            if (  PlQui == TabSl[1]  &&  TabSl[1] == TabTl[1]     )
            {
                    if ( PlQuoi ~ /manger/  && TabSl[2]  ~ /dormir/ && TabTl[2] ~  /rever/ )
                            {
                                    print PlQui
            }               }
     
    }
     
    # cat quiquandquoi.txt
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |manger| -
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |dormir| -
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |rever| -
    mardi, 25 Decembre 2017 20:10:23 Paris|Fabrice| - |manger| -
    mardi, 25 Decembre 2017 20:40:13 Strasbourg|Paul| - |manger| -
    mardi, 25 Decembre 2017 21:05:23 Dakar|Paul| - |dormir| -
    mardi, 25 Decembre 2017 21:05:23 Dakar|Paul| - |rever| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |manger| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |manger| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |dormir| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |rever| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |manger| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |dormir| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |parler| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |rever| -
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |manger| -
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |dormir| -
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |rever| -
     
    # awk -F- -f quiquandquoi.awk quiquandquoi.txt
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles|
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno|

  10. #10
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Déjà, uniformise tes séparateurs ! Des fois c'est une virgule, des fois c'est une espace, des fois c'est un trait vertical ... :-(

    Ensuite, j'utiliserais un tableau associatif en awk:
    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
    $ cat benjim.txt
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |manger| -
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |dormir| -
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |rever| -
    mardi, 25 Decembre 2017 20:10:23 Paris|Fabrice| - |manger| -
    mardi, 25 Decembre 2017 20:40:13 Strasbourg|Paul| - |manger| -
    mardi, 25 Decembre 2017 21:05:23 Dakar|Paul| - |dormir| -
    mardi, 25 Decembre 2017 21:05:23 Dakar|Paul| - |rever| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |manger| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |manger| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |dormir| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |rever| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |manger| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |dormir| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |parler| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |rever| -
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |manger| -
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |dormir| -
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |rever| -
    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
    $ cat benjim.txt|sed 's/[ ,]/|/g'
    mardi||25|Decembre|2017|19:50:50|Rouen|Charles||-||manger||-
    mardi||25|Decembre|2017|19:50:50|Rouen|Charles||-||dormir||-
    mardi||25|Decembre|2017|19:50:50|Rouen|Charles||-||rever||-
    mardi||25|Decembre|2017|20:10:23|Paris|Fabrice||-||manger||-
    mardi||25|Decembre|2017|20:40:13|Strasbourg|Paul||-||manger||-
    mardi||25|Decembre|2017|21:05:23|Dakar|Paul||-||dormir||-
    mardi||25|Decembre|2017|21:05:23|Dakar|Paul||-||rever||-
    mardi||25|Decembre|2017|22:35:53|Pologne|Christian||-||manger||-
    mardi||25|Decembre|2017|22:35:53|Pologne|Christian||-||manger||-
    mardi||25|Decembre|2017|22:35:53|Pologne|Christian||-||dormir||-
    mardi||25|Decembre|2017|22:35:53|Pologne|Christian||-||rever||-
    mardi||25|Decembre|2017|23:33:34|Casablanca|Benjim||-||manger||-
    mardi||25|Decembre|2017|23:33:34|Casablanca|Benjim||-||dormir||-
    mardi||25|Decembre|2017|23:33:34|Casablanca|Benjim||-||parler||-
    mardi||25|Decembre|2017|23:33:34|Casablanca|Benjim||-||rever||-
    mardi||25|Decembre|2017|23:45:54|Miami|Arno||-||manger||-
    mardi||25|Decembre|2017|23:45:54|Miami|Arno||-||dormir||-
    mardi||25|Decembre|2017|23:45:54|Miami|Arno||-||rever||-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ cat benjim.txt|sed 's/[ ,]/|/g' | awk -F'|' 'BEGIN{OFS=FS;} {a[$8,$6] = a[$8,$6]$12;nom[$8,$6]=$8;} END{for (i in a) if (a[i]=="mangerdormirrever") print nom[i];}'
    Arno
    Charles
    Ce n'est qu'une idée.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  11. #11
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 551
    Points : 19 385
    Points
    19 385
    Par défaut
    Citation Envoyé par Bufferbob
    pour valider il suffit de partir d'un score = 0
    je crois qu'en l'occurrence, pro132000 part de zéro.

    l'exercice consiste moins à ce que pro132000 mette de la confiture sur sa tartine, qu'à ce qu'il détermine comment trouver le chemin du placard de la cuisine.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  12. #12
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    D'après les spécifications fournies, àmha, c'est plutôt le fait que les actions "manger" et "rever" n'ont pas lieu dans la même seconde.
    oui exact, j'ai vu qu'après qu'il avait déjà répondu à la question

    du coup j'y vais de ma sauce en (g)awk également, sauf contrainte que j'aurai loupé normalement Christian doit faire partie des résultats :
    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
    BEGIN { FS="|" }  # fixe le séparateur de champs
     
    {  # on reformate la ligne de manière à n'avoir que les 3 champs pertinents, séparés par un '|'
       $0 = gensub(/^[^ ]+ (.+:[0-9]{2}) [^|]+\|([^|]+)\|[^|]+\|([^|]+).+/, "\\1|\\2|\\3", "", $0);
     
       # la discrimination
       if (($1 != old1) || ($2 != old2)) score = 0
       else {
          if (  (old3 == "manger" && $3 == "dormir") ||
                (old3 == "dormir" && $3 == "rever" )   ) score++
          else score = 0
       }
       printf("score = %d,    $0 = \"%s\"\n", score, $0)   # debug only
       old1=$1; old2=$2; old3=$3   # on oublie pas de conserver les champs pour la ligne suivante
    }
     
    score == 2 { # affichage en cas de réussite
       print $2
       score = 0
    }
    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
    $ gawk -f script.awk fichier
    score = 0,    $0 = "25 Decembre 2017 19:50:50|Charles|manger"
    score = 1,    $0 = "25 Decembre 2017 19:50:50|Charles|dormir"
    score = 2,    $0 = "25 Decembre 2017 19:50:50|Charles|rever"
    Charles
    score = 0,    $0 = "25 Decembre 2017 20:10:23|Fabrice|manger"
    score = 0,    $0 = "25 Decembre 2017 20:40:13|Paul|manger"
    score = 0,    $0 = "25 Decembre 2017 21:05:23|Paul|dormir"
    score = 1,    $0 = "25 Decembre 2017 21:05:23|Paul|rever"
    score = 0,    $0 = "25 Decembre 2017 22:35:53|Christian|manger"
    score = 0,    $0 = "25 Decembre 2017 22:35:53|Christian|manger"
    score = 1,    $0 = "25 Decembre 2017 22:35:53|Christian|dormir"
    score = 2,    $0 = "25 Decembre 2017 22:35:53|Christian|rever"
    Christian
    score = 0,    $0 = "25 Decembre 2017 23:33:34|Benjim|manger"
    score = 1,    $0 = "25 Decembre 2017 23:33:34|Benjim|dormir"
    score = 0,    $0 = "25 Decembre 2017 23:33:34|Benjim|parler"
    score = 0,    $0 = "25 Decembre 2017 23:33:34|Benjim|rever"
    score = 0,    $0 = "25 Decembre 2017 23:45:54|Arno|manger"
    score = 1,    $0 = "25 Decembre 2017 23:45:54|Arno|dormir"
    score = 2,    $0 = "25 Decembre 2017 23:45:54|Arno|rever"
    Arno

  13. #13
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Mai 2011
    Messages : 192
    Points : 250
    Points
    250
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    l'exposé laisse croire qu'il y a une information à comparer avant l'autre, mais en fait non, c'est le couple "date/lieu"-"personne" qu'il faut comparer entre la ligne courante et la ligne précédente.

    ensuite, comment penses-tu gérer que "rever" doit apparaître après "dormir", qui doit, lui, être apparu après "manger" afin d'afficher le nom de la personne ?
    Désolé pour le temps, c'est la question pour un champion en effet. En fait je pense que je vais devoir créer des variables contenant les différentes actions que je vais comparer à celle apparaissant dans le fichier. Par exemple, je cree
    var1=manger
    var2=dormir
    var3=rever

    En cas d'égalité des temps et personnes, alors je teste la dernière action avec mes variables. Je m'explique, si les 2 lignes sont egales en temps et personne alors je vérifie que l'action de la 1ere ligne est egale à var1 et si c'est le cas, je vais verifié que la 2e action est égale aussi à var2 et on passe à la comparaison à la 3e ligne pour voir si en cas d'égalité l'action est var3.

    je reviens rapidement sur le cas de Paul, qu'est-ce qui fait qu'il n'est pas éligible, le fait que la ville change entre deux actions ?
    C'est principalement dû au temps qui n'est pas le même. La ville ne pose pas de pb tant que les facteurs temps, personne et actions sont respectés.
    D'après les spécifications fournies, àmha, c'est plutôt le fait que les actions "manger" et "rever" n'ont pas lieu dans la même seconde.
    En fait elles n'ont pas eu lieu à la même heure, minute, seconde. Je pense avoir omis l'heure et la minute tout à l'heure, je vais editer les critères pour corriger cela
    Concernant l'algorithme, si on part du fait que tout sauf l'action doit être identique d'une ligne à l'autre, et que les actions sont fixes, je ferais ainsi (en bash ou en awk):
    je pense en effet que c'est ca l'idée et plus rapide que ce que j'ai mis plus haut donc je vais me pencher sur la correspondance bash .

  14. #14
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Mai 2011
    Messages : 192
    Points : 250
    Points
    250
    Par défaut
    Citation Envoyé par becket Voir le message
    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
     
    # cat quiquandquoi.awk
    {
            PlQui=$1
            PlQuoi=$2
     
            getline Sl
            split(Sl,TabSl)
     
            getline Tl
            split(Tl,TabTl)
     
            if (  PlQui == TabSl[1]  &&  TabSl[1] == TabTl[1]     )
            {
                    if ( PlQuoi ~ /manger/  && TabSl[2]  ~ /dormir/ && TabTl[2] ~  /rever/ )
                            {
                                    print PlQui
            }               }
     
    }
     
    # cat quiquandquoi.txt
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |manger| -
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |dormir| -
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |rever| -
    mardi, 25 Decembre 2017 20:10:23 Paris|Fabrice| - |manger| -
    mardi, 25 Decembre 2017 20:40:13 Strasbourg|Paul| - |manger| -
    mardi, 25 Decembre 2017 21:05:23 Dakar|Paul| - |dormir| -
    mardi, 25 Decembre 2017 21:05:23 Dakar|Paul| - |rever| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |manger| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |manger| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |dormir| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |rever| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |manger| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |dormir| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |parler| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |rever| -
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |manger| -
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |dormir| -
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |rever| -
     
    # awk -F- -f quiquandquoi.awk quiquandquoi.txt
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles|
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno|
    Je te remercie pour ce code. Je vais essayer de comprendre ce qui est fait concrètement . Déjà j'ai compris que tu passes par un tabeau (c'est pas extra d'avoir compris cela je sais ).

    Citation Envoyé par Flodelarab Voir le message
    Bonjour

    Déjà, uniformise tes séparateurs ! Des fois c'est une virgule, des fois c'est une espace, des fois c'est un trait vertical ... :-(

    Ensuite, j'utiliserais un tableau associatif en awk:
    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
    $ cat benjim.txt
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |manger| -
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |dormir| -
    mardi, 25 Decembre 2017 19:50:50 Rouen|Charles| - |rever| -
    mardi, 25 Decembre 2017 20:10:23 Paris|Fabrice| - |manger| -
    mardi, 25 Decembre 2017 20:40:13 Strasbourg|Paul| - |manger| -
    mardi, 25 Decembre 2017 21:05:23 Dakar|Paul| - |dormir| -
    mardi, 25 Decembre 2017 21:05:23 Dakar|Paul| - |rever| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |manger| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |manger| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |dormir| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |rever| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |manger| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |dormir| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |parler| -
    mardi, 25 Decembre 2017 23:33:34 Casablanca|Benjim| - |rever| -
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |manger| -
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |dormir| -
    mardi, 25 Decembre 2017 23:45:54 Miami|Arno| - |rever| -
    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
    $ cat benjim.txt|sed 's/[ ,]/|/g'
    mardi||25|Decembre|2017|19:50:50|Rouen|Charles||-||manger||-
    mardi||25|Decembre|2017|19:50:50|Rouen|Charles||-||dormir||-
    mardi||25|Decembre|2017|19:50:50|Rouen|Charles||-||rever||-
    mardi||25|Decembre|2017|20:10:23|Paris|Fabrice||-||manger||-
    mardi||25|Decembre|2017|20:40:13|Strasbourg|Paul||-||manger||-
    mardi||25|Decembre|2017|21:05:23|Dakar|Paul||-||dormir||-
    mardi||25|Decembre|2017|21:05:23|Dakar|Paul||-||rever||-
    mardi||25|Decembre|2017|22:35:53|Pologne|Christian||-||manger||-
    mardi||25|Decembre|2017|22:35:53|Pologne|Christian||-||manger||-
    mardi||25|Decembre|2017|22:35:53|Pologne|Christian||-||dormir||-
    mardi||25|Decembre|2017|22:35:53|Pologne|Christian||-||rever||-
    mardi||25|Decembre|2017|23:33:34|Casablanca|Benjim||-||manger||-
    mardi||25|Decembre|2017|23:33:34|Casablanca|Benjim||-||dormir||-
    mardi||25|Decembre|2017|23:33:34|Casablanca|Benjim||-||parler||-
    mardi||25|Decembre|2017|23:33:34|Casablanca|Benjim||-||rever||-
    mardi||25|Decembre|2017|23:45:54|Miami|Arno||-||manger||-
    mardi||25|Decembre|2017|23:45:54|Miami|Arno||-||dormir||-
    mardi||25|Decembre|2017|23:45:54|Miami|Arno||-||rever||-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ cat benjim.txt|sed 's/[ ,]/|/g' | awk -F'|' 'BEGIN{OFS=FS;} {a[$8,$6] = a[$8,$6]$12;nom[$8,$6]=$8;} END{for (i in a) if (a[i]=="mangerdormirrever") print nom[i];}'
    Arno
    Charles
    Ce n'est qu'une idée.
    Merci aussi pour cet élément de réponse.

    je constate que becket et toi dans vos résultats vous ne prenez pas en compte l'utilisateur Christian qui pourtant éxecute les actions manger, dormir, rever bien que la toute première action manger soit suivie de cette même action mais qui, par la suite est suivie de dormir et rever
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |manger| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |manger| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |dormir| -
    mardi, 25 Decembre 2017 22:35:53 Pologne|Christian| - |rever| -
    pourrai-je savoir pourquoi vous ne le considérez pas?

  15. #15
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 551
    Points : 19 385
    Points
    19 385
    Par défaut
    La ville ne pose pas de pb
    étant donné que la localisation n'est pas séparée de la date par le même séparateur que les autres champs, il faut considérer que c'est un facteur discriminant.
    ou alors, le fichier est mal conçu !

    NB: awk est un langage différent de bash, tout comme python, perl...
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  16. #16
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Mai 2011
    Messages : 192
    Points : 250
    Points
    250
    Par défaut
    je comprends mais c'est comme cela que le fichier est concu. C'est pourquoi j'ai aimé l'idée de Flodelarab qui a uniformisé les séparateurs à l'avance.

  17. #17
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 279
    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 279
    Points : 12 727
    Points
    12 727
    Par défaut
    Bonjour,
    En bash,
    prise en compte cas comme Christian:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    unset Pre
    unset Xarray
    declare -A Xarray
    while IFS="|" read a b c
    do
      if [[ "$Pre" != "$a|$b" && -n "$Pre" ]]
      then
         [[ "${Xarray[$Pre]}" =~ ' - |manger| - - |dormir| - - |rever| -' ]] && echo "${Pre}"
         unset "Xarray[$Pre]"
      fi
      Xarray["$a|$b"]="${Xarray[$a|$b]}$c"
      Pre="$a|$b"
    done <fichier
    [[ "${Xarray[$Pre]}" =~ ' - |manger| - - |dormir| - - |rever| -' ]] && echo "${Pre}"
    sans prise en compte du cas comme Christian:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    unset Pre
    unset Xarray
    declare -A Xarray
    while IFS="|" read a b c
    do
      if [[ "$Pre" != "$a|$b" && -n "$Pre" ]]
      then
         [[ "${Xarray[$Pre]}" = ' - |manger| - - |dormir| - - |rever| -' ]] && echo "${Pre}"
         unset "Xarray[$Pre]"
      fi
      Xarray["$a|$b"]="${Xarray[$a|$b]}$c"
      Pre="$a|$b"
    done <fichier
    [[ "${Xarray[$Pre]}" = ' - |manger| - - |dormir| - - |rever| -' ]] && echo "${Pre}"
    Cordialement.

  18. #18
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    je constate que becket et toi dans vos résultats vous ne prenez pas en compte l'utilisateur Christian
    Au temps pour moi. Christian est un gros morfalou qui mange 2 fois. Il faut transformer l'égalité stricte en test d'expression régulière.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ cat benjim.txt|sed 's/[ ,]/|/g' | awk -F'|' 'BEGIN{OFS=FS;} {a[$8,$6] = a[$8,$6]$12;nom[$8,$6]=$8;} END{for (i in a) if (a[i] ~ "mangerdormirrever") print nom[i];}' 
    Arno
    Christian
    Charles
    Question: Est-ce qu'on peut dormir 2 fois dans la séquence "manger dormir rêver" ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  19. #19
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 551
    Points : 19 385
    Points
    19 385
    Par défaut
    vous avez bien bossé les gars, j'espère que vous aurez tous une bonne note.
    sauf pro132000, qui n'a pas pondu une ligne de code, ni fait avancer son algo.


    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  20. #20
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Mai 2011
    Messages : 192
    Points : 250
    Points
    250
    Par défaut
    Bjr a tous et merci a tous pour vos codes.

    Citation Envoyé par N_BaH
    vous avez bien bossé les gars, j'espère que vous aurez tous une bonne note.
    En effet et je compte bien le leur en donner.

    Citation Envoyé par Flodelarab
    Question: Est-ce qu'on peut dormir 2 fois dans la séquence "manger dormir rêver" ?
    Non car en principe les evenements de la sequence doivent etre uniques et cet ordre

    Citation Envoyé par N_BaH
    sauf pro132000, qui n'a pas pondu une ligne de code, ni fait avancer son algo.
    Desole je n'etais pas dispo mais je m'y mettrais. Vos codes sont assez sophistiques pour moi et donc je vais essayer de vous produire un code pour debutant que j'espere, vous m'aiderez a ameliorer. Entre temps je vais continuer ma lecture sur le bash et avec votre expertise dans le domaine, outre tous les liens disponibles sur internet, si vous connaissez des liens specifiques que vous pouvez me recommender, je suis preneur car vous connaissez forcement les points a connaitre absolument pour une bonne maitrise du domaine.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Parcourir un fichier .LOG
    Par tania_hf dans le forum SAS Base
    Réponses: 4
    Dernier message: 07/07/2014, 14h50
  2. Remplacer la 1er virgule de chaque ligne par une tabulation
    Par michel42 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 16/05/2012, 17h12
  3. Réponses: 18
    Dernier message: 24/06/2011, 15h13
  4. [AC-2003] récupérer les valeur d'une textbox ligne par ligne
    Par 0sef40 dans le forum VBA Access
    Réponses: 5
    Dernier message: 07/06/2011, 09h22
  5. Réponses: 6
    Dernier message: 17/01/2007, 12h30

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