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 :

Trier et éliminer doublon dans AWK


Sujet :

Shell et commandes GNU

Vue hybride

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 45
    Par défaut Trier et éliminer doublon dans AWK
    Bonjour,

    Dans la commande ci-dessous, je récupère un certain nombre d'information dans des fichiers.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    awk 'BEGIN{FS=" "; }{ 	if ($1 == "Req_id"){ NUM_REQUEST_ID = $NF;} 	
    						if ($2 == "PROCEDURE"){ NAME_PROCEDURE=$NF;}
    						if ($2 == "SESSION"){ NAME_SESSION=$NF;}
    						if ($1 == "INFO_BATCH"){ if ($2 == "heure"){ if($3 == "debut" ){ HEURE_DEBUT=$4" "$5;} else {if($3 == "fin" ){ HEURE_FIN=$4" "$5;}}}}
    						if ($1 == "EXECUTION_USER"){split($2,TAB,":"); NAME_UTILISATEUR=TAB[2];}
    						if ($1 == "PGM_NAME"){split($2,TAB,":"); NAME_PGM=TAB[2];}	
    						if ($1 == "REQUEST_ID"){ FILS=$3" "FILS;}
    					}END{ printf("%s,%s,%s,%s,%s,%s,%s,%s", NUM_REQUEST_ID,NAME_PROCEDURE, NAME_SESSION,HEURE_DEBUT,HEURE_FIN,NAME_UTILISATEUR, NAME_PGM,FILS )}' toto.txt
    ce qui me donne sur un fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    9762063,TOTO18O03,TOTO18H,24/11/13 11:29:05,24/11/13 11:34:07,,,9762081 9762080 9762079 9762078 9762081 9762080 9762079 9762078 9762081 9762080 9762079 9762078 9762080 9762079 9762078 9762076 9762080 9762079 9762078 9762076 9762080 9762079 9762078 9762076 9762079 9762078 9762076 9762073 9762079 9762078 9762076 9762073 9762076 9762074 9762073 9762071 9762076 9762074 9762073 9762071 9762076 9762074 9762073 9762071 9762074 9762073 9762072 9762071 9762074 9762073 9762072 9762071 9762073 9762072 9762071 9762070 9762073 9762072 9762071 9762070 9762073 9762072 9762071 9762070 9762072 9762071 9762070 9762065 9762072 9762071 9762070 9762065 9762072 9762071 9762070 9762065 9762070 9762067 9762066 9762065 9762070 9762067 9762066 9762065 9762067 9762066 9762065 9762064 9762067 9762066 9762065 9762064 9762067 9762066 9762065 9762064 9762067 9762066 9762065 9762064 9762067 9762066 9762065 9762064 9762067 9762066 9762065 9762064
    Mon souci est que le dernier champ (FILS) me renvoi de nombreux doublon.
    Y a t il une méthode pour trier et supprimer les doublons dans le AWK?

    Merci d'avance pour vos réponse,

  2. #2
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Tu peux remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($1 == "REQUEST_ID"){ FILS=$3" "FILS;}
    }
    END{ printf("%s,%s,%s,%s,%s,%s,%s,%s", NUM_REQUEST_ID,NAME_PROCEDURE, NAME_SESSION,HEURE_DEBUT,HEURE_FIN,NAME_UTILISATEUR, NAME_PGM,FILS )}' toto.txt
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ($1 == "REQUEST_ID"){ FILS[$3]=1}
    }
    END{ printf("%s,%s,%s,%s,%s,%s,%s,", NUM_REQUEST_ID,NAME_PROCEDURE, NAME_SESSION,HEURE_DEBUT,HEURE_FIN,NAME_UTILISATEUR, NAME_PGM );
    for(i in FILS) printf("%s ",i)}' toto.txt

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 45
    Par défaut
    Merci, je vais le tester car c'est plutôt astucieux.

    J'avais pensé à un tableau mais pas de cette manière.

Discussions similaires

  1. Éliminer les doublons dans un fichier sous bash
    Par BIG123 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 23/01/2013, 15h20
  2. éliminer les doublons dans un tableau
    Par elpatriota dans le forum VBScript
    Réponses: 3
    Dernier message: 21/03/2011, 12h46
  3. Réponses: 0
    Dernier message: 14/04/2010, 13h36
  4. rechercher et éliminer doublons dans table
    Par patbeautifulday1 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 16/05/2007, 10h27
  5. [sql] [oracle] éliminer les doublons dans sum ?
    Par trungsi dans le forum Langage SQL
    Réponses: 14
    Dernier message: 04/03/2005, 12h29

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