Extraire les date dans un fichier texte

Résolu
babare -  
babare76 Messages postés 20 Statut Membre -
Bonjour,
j'ai une fichier.txt en format cvc
TOTO;tata;Id;First;Latest;
BEGIN;1;{internal,push_sup,invalid_sql_tables};2008-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
BEGIN;2;{internal,session_navigation,session_crashed};2008-10-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
j'aimerai extraire la colonne $6(first) pour avoir leur et par la suite distinguer le jour et la nuit.je suis un débutant j'éxécute la comande suivant pour pouvoir afficher l'heure mes elle marche pas.
awk 'BEGIN{FS=";"}; {print identite=" $2 " la_cause=" $3 " heuredebut=" $6 }' alarms.txt | awk {print" datededebut=" substr($6,11,5)} fichier.txt
pouviez vous m'aider svp.
Configuration: febora 6

19 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
     
    Pas besoin d'awk à mon avis...
    (mando@aldur) (~) $ grep BEGIN pouet
    BEGIN;1;{internal,push_sup,invalid_sql_tables};2008-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;2;{internal,session_navigation,session_crashed};2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
    (mando@aldur) (~) $ grep BEGIN | cut -d";" -f4
    2008-10-15 12:05:08 LOC
    2008-1­0-15 22:10:08 LOC
    (mando@aldur) (~) $ grep BEGIN | cut -d";" -f4 | cut -d" " -f2
    12:05:08
    22:10:08
    

    Bonne chance
    0
    1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
       
      edit : il fallait bien entendu lire :
      grep BEGIN pouet | cut -d";" -f4
      grep BEGIN pouet | cut -d";" -f4 | cut -d" " -f2
      
      0
  2. babare76 Messages postés 20 Statut Membre
     
    thank mamiemando pour la réponse sa marche super bien. pourriez vous me donnes de piste pour différencier le jour de la nuit
    sachant que le jour c de 8h à 20h et la nuit de 20h à 8h.

    merci
    0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Tiens en partant de ton fichier et avec awk :
    jp@MDK:~/tmpfs ssh$ cat babare
    TOTO;tata;Id;First;Latest;
    BEGIN;1;{internal,push_sup,invalid_sql_tables};2008-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;2;{internal,session_navigation,session_crashed};2008-10-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
    
    jp@MDK:~/tmpfs ssh$ awk -F';' '/BEGIN/ { if (substr($4,12,2) >= 8 || substr($4,12,2) <=20) { print $4" jour" } else { print $4" nuit"}}' babare
    2008-10-15 12:05:08 LOC jour
    2008-10-15 22:10:08 LOC nuit
    
    jp@MDK:~/tmpfs ssh$
    ;-)
    0
    1. babare76 Messages postés 20 Statut Membre
       
      Bonjour,
      thank sa marche .je tentai de creer des variable dans un fichier sh pour faire des comparaison bref un histoire compliquer
      mais la avec cette comande mon probléme est résolut je vous remercie.
      si vous avez des liens utiles pour me former ou des exo je suis prennant.
      0
    2. babare76 Messages postés 20 Statut Membre
       
      bonjour,
      en partant de awk serais til possible d'afficher les éléments distinctes
      TOTO;tata;Id;First;Latest;
      BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
      BEGIN;external;{internal,session_navigation,session_crashed};2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
      BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-10-15 12:05:08 LOC;2008-10-15 12:05:08 LOC

      je reprend la commande modifier
      awk -F';' '/BEGIN/ { if (substr($2,1,8) != substr($2,1,8) <=20) { print $2" NAME" } babareTXT
      mais celle ci ne marche pas .pourriez vous m'aidez svp
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > babare76 Messages postés 20 Statut Membre
         
        serait-il possible d'afficher les éléments distincts
        Euh... de quels éléments distincts tu parles ???

        Dis ce que tu veux obtenir après, affiche un exemple...
        0
  4. babare76 Messages postés 20 Statut Membre
     
    disons les élements distintes pour une colonnes sonné par exemple le fichier suivant
    TOTO;tata;Id;First;Latest;

    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;externaliser;{internal,session_navigation,session_crashed}­;2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC

    je voudrai afficher les élément distinct de la deuxiéme, genre je parcour le fichier et chaque fois que je rencontre un élément nouveaux à la 2é colonnes je la fiche

    résulta souhaiter

    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;externaliser;{internal,session_navigation,session_crashed}­;2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC

    on contate que j'ai internal et externaliser comme éléments distincte
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      sed -n '/BEGIN/p' fichier | sort -u +1
      ;-))
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. babare76 Messages postés 20 Statut Membre
     
    merci pour ta réponse
    voici ce qu j'obtient
    [babare@fn eva]$ sed -n '/BEGIN/p' babare.txt | sort -u +1
    sort: open failed: +1: No such file or directory
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Essaye alors avec :
      sort -u -k2
      0
  7. babare76 Messages postés 20 Statut Membre
     
    kan je fais sort -k2 je n'ai pas d'erreur mon fichier apparait mais je vois pas la différence avec l'originale

    fichier avant
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;externaliser;{internal,session_navigation,session_cras­hed}­;2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC

    fichier aprés
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;externaliser;{internal,session_navigation,session_cras­hed}­;2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Ah ? Pourtant c'est bien le résultat que tu voulais si j'en crois ton post #8, non ?
      0
  8. babare76 Messages postés 20 Statut Membre
     
    je vous remercie encore pour votre disponibilité. sorry je me suis tromper ds la réponse j'ai
    fichier avant
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;externaliser;{internal,session_navigation,session_cras­­hed}­;2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
    fichier aprés
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;externaliser;{internal,session_navigation,session_cras­­hed}­;2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
    et j'aimerai avoir
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;externaliser;{internal,session_navigation,session_cras­­hed}­;2008-1­0-15 22:10:08 LOC;2008-10-15 12:10:08 LOC
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Alors essaye :
       sort -u -t";" -k2,3
      Un exemple :
      jp@MDK:~/tmpfs ssh$ cat fichier
      TOTO;tata;Id;First;Latest;
      
      BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
      BEGIN;externaliser;{internal,session_navigation,session_cras­hed}­;2008-1­0-15 12:05:08 LOC;2008-10-15 12:10:08 LOC
      BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
      
      jp@MDK:~/tmpfs ssh$ sed -n '/BEGIN/p' fichier | sort -u -t";" -k2,3
      BEGIN;externaliser;{internal,session_navigation,session_cras­hed}­;2008-1­0-15 12:05:08 LOC;2008-10-15 12:10:08 LOC
      BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
      
      jp@MDK:~/tmpfs ssh$
      ;-))
      0
  9. babare76 Messages postés 20 Statut Membre
     
    c super sa marche à merveille merci pour votre disponibilité thanks
    0
  10. babare76 Messages postés 20 Statut Membre
     
    re bonjour,
    génis du script j'aimerai classer mais log par jour semaine et mois
    par exmple
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;externaliser;{internal,session_navigation,session_cras­hed}­;2008-1­0-23 12:05:08 LOC;2008-10-15 12:10:08 LOC
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-29 12:05:08 LOC;2008-10-15 12:05:08 LOC
    pour avoir a peu prés
    internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 1 fois par semaine
    externaliser;{internal,session_navigation,session_cras­hed}­ 0 fois par semaine
    internal;{internal,push_sup,invalid_sql_tables};2008-1­­0-15 2 fois le mois
    externaliser;{internal,session_navigation,session_cras­hed}­ 1 fois par semaine
    thank
    0
  11. babare76 Messages postés 20 Statut Membre
     
    pour le moment mon script est le suivant
    #!/usr/bin/awk -f

    BEGIN{
    {FS=";"}
    {nb_lignes = 0}
    {nb_lignes = nb_lignes + 1}
    {print "nombre de alarms= "nb_lignes}
    }
    {print "la liste des alarmes est la suivantes" $3 }

    for (i = 1; i <= 5; i++)
    occurence($3)}

    function occurence (inc)
    {
    if ($3 == "inc") {h= h+1}
    }
    {print "Nb doccurences pour alarms:"h}
    0
  12. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
     
    Si tu veux classer, la commande sort pourrait t'aider, mais il faudrait que les dates apparaissent en début de ligne.
    0
  13. babare76 Messages postés 20 Statut Membre
     
    je peu pas déplacer les dates c un logitiel qui me donne le fichier csv. de mon coté je doi faire un script pour réaliser la tache.
    peut je peus faire un script qui modifie la position de la date et aprés un autre script pour classer

    qu'est que t'en pense?
    thank
    0
  14. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
     
    J'en pense que ca se fait assez facilement en c++ mais en shell je ne sais pas comment faire ça simplement. Peut-être que jipicy sera plus inspiré que moi pour le faire en shell.
    0
  15. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Je ne suis pas sûr de tout bien avoir compris de ce que tu veux obtenir comme tri ;-\

    En attendant, en partant de ce fichier auquel j'ai rajouté des entrées avec des dates différentes (mois et jours) :
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-10-17 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;externaliser;{internal,session_navigation,session_cras­­hed}­;2008-03-30 12:05:08 LOC;2008-10-15 12:10:08 LOC
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-11-09 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-08-25 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;externaliser;{internal,session_navigation,session_cras­­hed}­;2008-05-03 12:05:08 LOC;2008-10-15 12:10:08 LOC
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-01-29 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-07-13 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;externaliser;{internal,session_navigation,session_cras­­hed}­;2008-12-23 12:05:08 LOC;2008-10-15 12:10:08 LOC
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-11-29 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-09-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;externaliser;{internal,session_navigation,session_cras­­hed}­;2008-10-23 12:05:08 LOC;2008-10-15 12:10:08 LOC
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-10-29 12:05:08 LOC;2008-10-15 12:05:08 LOC
    
    Voilà un tri par mois et par jours avec affichage uniquement de la colonne 2 (nom) et la colonne des dates pour une meilleure visibilité du tri :
    [tmpfs]$ sort -t ";" -k 4.1n,4.4n -k 4.6n,4.7n -k 4.9n,4.10n fich | awk -F ";" '{ printf "%s\t%s\n", $2,$4 }'
    
    internal        2008-01-29 12:05:08 LOC
    externaliser    2008-03-30 12:05:08 LOC
    externaliser    2008-05-03 12:05:08 LOC
    internal        2008-07-13 12:05:08 LOC
    internal        2008-08-25 12:05:08 LOC
    internal        2008-09-15 12:05:08 LOC
    internal        2008-10-17 12:05:08 LOC
    externaliser    2008-10-23 12:05:08 LOC
    internal        2008-10-29 12:05:08 LOC
    internal        2008-11-09 12:05:08 LOC
    internal        2008-11-29 12:05:08 LOC
    externaliser    2008-12-23 12:05:08 LOC
    
    [tmpfs]$
    ;-))
    0
  16. babare76 Messages postés 20 Statut Membre
     
    merci pour le tri c marche je pense que c plus correcte de l'afficher de cette maniére.
    pourrez tu m'expliquer la commande please?
    pour le script que j'ai mis précédament je voulais avoir le nombre d'occurence j'ai modifié le script et c ok.
    mais je suis obliger de mettre de comparer a chaque fois les noms
    #!/usr/bin/awk -f
    W
    BEGIN{
    {FS=";"}
    {print "la liste des alarmes est la suivantes:" $2}
    }

    { for (i = 1; i <= RS; i++)
    {print i}
    occurence($2)
    }
    END{
    {print "Nb doccurences pour internal:" h}
    {print "nb doccurente pour external:" j}
    }

    function occurence(inc)
    {
    if (inc == "internal") {h= h+1}
    if (inc == "external") {j= j+i}
    }

    résultat obtenu
    la liste des alarmes est la suivantes:
    Nb doccurences pour internal:6
    nb doccurente pour external:2

    je suis obliger de mettre tout les noms possible

    thank
    0
  17. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Peux-tu poster un exemple assez significatif, avant => après, de ce que tu veux s'il te plaît, merci.
    0
  18. babare76 Messages postés 20 Statut Membre
     
    disont avant j'ai ceci
    je dois affiche le nombre de fois qu'un name est afficher

    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­0-17 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;externaliser;{internal,session_navigation,session_cras­­­hed}­;2008-03-30 12:05:08 LOC;2008-10-15 12:10:08 LOC
    BEGIN;toto;{internal,push_sup,invalid_sql_tables};2008-1­1-09 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-0­8-25 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;externaliser;{internal,session_navigation,session_cras­­­hed}­;2008-05-03 12:05:08 LOC;2008-10-15 12:10:08 LOC
    BEGIN;tata;{internal,push_sup,invalid_sql_tables};2008-0­1-29 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-0­7-13 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;externaliser;{internal,session_navigation,session_cras­­­hed}­;2008-12-23 12:05:08 LOC;2008-10-15 12:10:08 LOC
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­1-29 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-0­9-15 12:05:08 LOC;2008-10-15 12:05:08 LOC
    BEGIN;externaliser;{internal,session_navigation,session_cras­­­hed}­;2008-10-23 12:05:08 LOC;2008-10-15 12:10:08 LOC
    BEGIN;internal;{internal,push_sup,invalid_sql_tables};2008-1­0-29 12:05:08 LOC;2008-10-15 12:05:08 LOC

    et j'aurai souhaiter avoir

    le nombre d'occurence pour: externaliser : 3
    le nombre d'occurence pour: toto: 1
    le nombre d'occurence pour: internal: 5
    le nombre d'occurence pour: tata: 1

    thank
    0
  19. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    sort -u -t ";" -k2 fichier | awk -F";" '{ print $2 }' | uniq -c
    0
  20. babare76 Messages postés 20 Statut Membre
     
    sa marche à merveille merci pour votre disponibilité

    best regards
    0