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 et la comparaison


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Par défaut awk et la comparaison
    j'ai par exemple un fichier texte :

    marque:prix:couleur
    peugeot:180000
    ford:50000
    ford:9000
    opel:21000

    je veux montrer la ligne qui a le plus bas prix avec awk
    la probleme c'est de comment conserver le premier prix et le comparer directement avec le deuxieme prix et ainsi de suite

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    une solution est de trier sur la deuxieme colonne e toutes les lignes qui contiennent des nombre sur celle ci. puis de ramasser la derniere ligne ... comme ça tu as tjrs le bas prix ..

  3. #3
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Par défaut
    merci pour votre reponse
    mais mois je cherche comment faire ca avec awk
    un autre exemple c'est de comparer les nom et d'affichier les noms qui ne sont pas doublé
    par exemple:

    barraj
    hamid
    barraj
    kamil
    ismail

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Bonjour,

    dans le premier cas, l'algorithme est simple :
    tu retiens la valeur dans une variable
    si la suivante est inférieure, elle remplace la précédente
    enfin, tu affiches la variable.

    pour le second, il faut jouer avec un tableau, dont l'indice sera le champ, et la valeur une incrémentation.
    à la fin, en parcourant le tableau, si la valeur est égale à 1, alors on affiche l'indice.


    PS:
    sur un forum, une question, un sujet.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    +1 pour une seule question par fil de discussion.
    Mais pour le coup, c'est le même concept à utiliser: utiliser un tableau dont un champ est la clé.

    Question 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ awk -F':' '(NR==1){next;} (a[$1]=="")||($2<a[$1]){a[$1]=$2;} END{for (i in a) print i,"prix min:",a[i];}' voitures.txt 
    peugeot prix min: 180000
    opel prix min: 21000
    ford prix min: 9000
    Question 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ awk '{a[$0]++;} END{for (i in a) if (a[i]<2) print i;}' prenoms.txt 
    hamid
    kamil
    ismail

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Mais pour le coup, c'est le même concept à utiliser: utiliser un tableau dont un champ est la clé.
    ouaip, il est fatigué pépère !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. [awk] Comparaison par colonne de deux tableaux
    Par luckythrice dans le forum Shell et commandes GNU
    Réponses: 18
    Dernier message: 05/09/2015, 10h35
  2. AWK: faire une comparaison exacte entre 2 strings
    Par farphe dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 14/01/2009, 20h54
  3. AWK problème de comparaison
    Par roman67 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 10/10/2008, 13h54
  4. comparaison de 2 dates
    Par eisti dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/08/2003, 11h33

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