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 :

Trouver une différence dans une seule et même liste


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 64
    Points : 55
    Points
    55
    Par défaut Trouver une différence dans une seule et même liste
    Hello,

    J'ai un fichier de type :

    azazdaz;qqsdsd;2;sqdsq
    qqsd;sqdsqd;2;qsdsqdsqdqsd
    sqdqsdqs;sqdqdd;2;sqdsqdqdq
    qdqsdqd;dsffd;3;qsdsqds

    Je souhaiterais renvoyer une erreur si le 3eme champs contient une différence par rapport à toutes les lignes. En fait, je dois m'assurer que mon 3eme champs soit commun à chaque ligne, dans mon exemple, le 3eme champs n'est pas identique, car pour les 3 premières lignes c'est bon ("2"), mais à la 4eme, il y a une différence ("3").

    Je sais extraire ce 3eme champs sur chaque ligne (awk '{print $3}'), mais je ne vois pas du tout comment mettre en place le compteur qui me permettrait de mémoriser le premier résultat et le comparer avec les autres, pour renvoyer 1 ou 0.

    Comment procéderiez vous ?

    Merci

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 64
    Points : 55
    Points
    55
    Par défaut
    Réponse à moi même : cat monresultat | sort | uniq ==> si ce résultat = 1, je suis bon, sinon (+ de 1) c'est qu'il y a au moins une différence.

  3. #3
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 287
    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 287
    Points : 12 744
    Points
    12 744
    Par défaut
    Bonjour,
    Si tu passe par awk pour récupérer ton fameux champs, autant lui faire faire le travail:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F\; '{A[$3]=1}END{print length(A)}' fichier
    Même principe que pour ton 'cat | sort | uniq' : si 1 ok sinon pas ok.
    Cordialement.

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

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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