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 :

utilisation grep sort awk


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 29
    Points
    29
    Par défaut utilisation grep sort awk
    salut à tous.
    j'ai un fichier data dont tous les enregistrements ont la même structure (même nb de colonnes).
    je voudrais:
    1 - récupérer les enregistrements dont la ligne contient le mot "ok" entouré de tabulations
    2 - trier le fichier sur les nombres des colonnes 2 et 7
    3 - récupérer les champs #2, #3 et #7 du premier enregistrement et les foutre dans trois variables a, b et c
    j' ai fait un truc comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    grep $'\t'"ok"$'\t' data | \
    sort -n --key=2 --key=7 | \
    awk '{print $2, $3, $7; exit}' | \
    read a b c
    aucun résultat: les variables sont vides après exécution. pourtant j'ai vérifier le fichier et ça ne devrait pas être le cas.
    une idée? j'aimerais faire tout ça en une seule étape (sans utiliser de fichier intermédiaire)

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 588
    Points : 19 474
    Points
    19 474
    Par défaut
    Comme il a été dit dans une discussion précédente, read ne conserve que le temps de son éxécution les variables, lorsqu'il les lit depuis un tube.

    D'autre part, les commandes 'grep' et 'sort' sont inutiles, awk peut le faire, et plus rapidement (cf. ce lien).

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    ok merci pour les liens.
    pour ceux que ca interesse, voici la commande modifiée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ligne=$(grep $'\t'"ok"$'\t' data | \
       sort -n --key=2 --key=7 | \
       awk '{print $2, $3, $7; exit}')
    read a b c <<< $ligne

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

Discussions similaires

  1. [bash] utilisation de CAT/AWK pour parser un fichier CSV
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 32
    Dernier message: 25/07/2007, 23h34
  2. Utilisation de Sort d'un Objet TObjectList
    Par ero-sennin dans le forum Delphi
    Réponses: 7
    Dernier message: 19/04/2007, 13h11
  3. utilisation de sort()
    Par crischprolch dans le forum C++
    Réponses: 12
    Dernier message: 24/05/2006, 10h29
  4. Commange Grep dans Awk
    Par lili_bzh dans le forum Linux
    Réponses: 1
    Dernier message: 10/01/2006, 11h49
  5. Csh, sort, awk
    Par Longrais dans le forum Linux
    Réponses: 2
    Dernier message: 26/08/2005, 13h17

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