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 :

AWK Comparer un champ sur plusieurs lignes


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2012
    Messages : 26
    Points : 10
    Points
    10
    Par défaut AWK Comparer un champ sur plusieurs lignes
    Bonjour à tous,

    EDIT: Je voudrais pour un fichier donné, comparer le champ x de chaque ligne et si il est identique avec le même champ présent sur les autres lignes, effectuer plusieurs action. Pourriez-vous m'aider ?

    Exemple du fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    2012-06-07 06:25:30 1ScUGn-0002IB-7j <= hom@bd.missions...org H=(ACFJ4YGMQ1) [182.x.x.x] P=esmtpa A=fixed_login:hom@bd.missions...org S=4591657 id=005301cd4465$6af85e20$40e91a60$@bd.missions...org
    2012-06-07 06:25:33 1ScUHt-0002Tn-7k <= hom@bd.missions...org H=localhost [127.0.0.1] P=esmtp S=4592070 id=005301cd4465$6af85e20$40e91a60$@bd.missions...org
    2012-06-07 06:25:33 1ScUGn-0002IB-7j => fscoordo@bd.missions...org R=amavis_router T=amavis H=srv1.missions...org [127.0.0.1]
    2012-06-07 06:25:33 1ScUGn-0002IB-7j -> homassist@bd.missions...org R=amavis_router T=amavis H=srv1.missions...org [127.0.0.1]
    Le champ qui m’intéresse est le 3ème donc $3. La ou je bloque c'est au moment de comparer avec les autres lignes du fichier.

    D'avance merci

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    est-ce qu'il faut comparer avec la ligne immédiatement en dessous,
    ou s'agit-il de savoir si la valeur du troisième champ est répétée à cet emplacement dans le fichier ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2012
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Je souhaite savoir si la valeur du troisième champ est répétée à cet emplacement dans tout le fichier

  4. #4
    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
    Avec awk, on peut faire quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     awk 'BEGIN { cpt=1}  NR == 1 { CHAINE=$3 }  $3 == CHAINE { cpt++ } END { if ( NR == cpt ) { print "OK" } else { print "KO" }   }'  FICHIER.TXT

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2012
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Merci pour cette réponse. Quelqu'un ma donné une solution qui correspond parfaitement à ce que je veux faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ awk '{n[$3]++}END{for (x in n) {print x " -> " n[x] " fois"}}' fichier
    1ScUGn-0002IB-7j -> 3 fois
    1ScUHt-0002Tn-7k -> 1 fois

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

Discussions similaires

  1. Shell - Report d'1 champ sur plusieurs lignes
    Par coco_mtl dans le forum Unix
    Réponses: 2
    Dernier message: 26/01/2011, 18h52
  2. La meme valeur dans un champ sur plusieurs lignes
    Par JeanduB dans le forum Access
    Réponses: 8
    Dernier message: 15/05/2008, 15h52
  3. [SSRS] cangrow -- champ sur plusieurs lignes
    Par marie253 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/11/2007, 09h27
  4. Réponses: 12
    Dernier message: 25/09/2007, 18h22
  5. Comparer plusieurs champs sur une ligne
    Par BlacKou dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 03/07/2007, 10h51

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