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 ou CUT pour une récupération de champs


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut AWK ou CUT pour une récupération de champs
    Bonjour à tous,

    voilà j'ai le fichier suiivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Active Tier:
    Resource           Size GiB     Used GiB   Avail GiB   Use%   Cleanable GiB*
    ----------------   --------   ----------   ---------   ----   --------------
    /xxxx: pre-comp           -   17422196.0           -      -                -
    /xxxx: post-comp   648579.8     507163.7    141416.1    78%          20529.1
    /yyyy                 47.2         11.8        33.1    26%                -
    /yyyy/core           984.3         34.3       900.0     4%                -
    ----------------   --------   ----------   ---------   ----   --------------
     * Estimated based on last cleaning of 2020/01/15 12:37:11.
    j'aimerais récupérer les champs suivants séparés d'un ;

    ce qui donnerais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    648579.8; 507163.7;17422196.0;141416.1;78;
    ce sont les lignes 5 et 6 qui sont concernées :

    4 ème champs de la ligne 5
    3,4,5 et 6 ème champ de la ligne 6

    Du coup ça serait quoi l'idéal, le AWK ou le CUT ?


    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    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 347
    Par défaut
    Bizarre, pour moi, c'est la 4ème et 5ème ligne...

    On peut utiliser les 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ tail -n +4 fichier | head -2 | paste - - | awk '{OFS=";";print $10,$11,$4,$12,$13}' | cut -d\% -f1
    648579.8;507163.7;17422196.0;141416.1;78
    Mais la vrai réponse c'est awk uniquement...

    Le compteur de ligne du fichier en cours dans awk est FNR, donc si FNR == 4 alors on récupère le champs $4 dans une variable et si FNR == 5 on affiche les champs qui nous intéresse ainsi que celui que l'on a récupéré de la ligne 4...

    Je pense que tu as toutes les billes pour ton problème...

  3. #3
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    Salut,

    j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    awk '{if ((FNR) == 5) print $4";";else if ((FNR) == 6) print $3 ";" $4 ";" $5 ";" $6;}' applianceTer.txt
    Ca fonctionne, mais le seul hic, c'est que j'ai les résultat sur 2 lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    17152270.0;
    648579.8;507626.2;140953.7;78%

  4. #4
    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

    Et dès que quelqu'un va ajouter une ligne, ton script sera une horreur car les infos ne seront pas ligne 4 et 5.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ awk '/pre-comp/{mem=$4;} /post-comp/{OFS=";";print $3,$4,mem,$5,$6}' fichier.txt
    648579.8;507163.7;17422196.0;141416.1;78%

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    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 347
    Par défaut
    Non, pour la ligne 5, on affiche pas, on sauvegarde la valeur dans une variable et on l'affiche lors de la ligne 6.

    Ce qui donne pour ton code (pas testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '{if ((FNR) == 5)  var=$4;else if ((FNR) == 6) print $3 ";" $4 ";" var ";" $5 ";" $6;}' applianceTer.txt
    Après une écriture plus standard awk (pas testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk 'FNR == 5 {var=$4} ; FNR == 6 { print $3 ";" $4 ";" var ";" $5 ";" $6;}' applianceTer.txt

  6. #6
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    Merci à tous !

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

Discussions similaires

  1. tMap: utilisation du tMap pour une regroupement des champs
    Par ben.83 dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 18/03/2010, 08h51
  2. Requête pour une recherche sur champs multiple d'une table
    Par fred777 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 07/10/2008, 16h33
  3. Réponses: 1
    Dernier message: 03/10/2008, 21h34
  4. Demande de conseil pour une récupération de données
    Par le-roy_a dans le forum Administration
    Réponses: 8
    Dernier message: 21/08/2008, 17h11
  5. Demande de conseils pour une récupération de données
    Par le-roy_a dans le forum Installation
    Réponses: 1
    Dernier message: 18/08/2008, 15h29

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