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

Linux Discussion :

Awk, ignorer une ligne


Sujet :

Linux

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    Points : 50
    Points
    50
    Par défaut Awk, ignorer une ligne
    Bonjours ,

    J'ai une commande du type : tata
    Résultat :
    toto: in1 in2 in3
    truc 0.1 0.2 0.3

    Je voudrais récupérer les valeur 0.1 0.2 0.3.

    J'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ma commande | /bin/awk '
        BEGIN {FS=" "}
        { printf ";%s", $2 }
          END { printf ("\n")}'
    Je n'arrive pas à faire comprend à awk de sauter la 1ère ligne pour commencer mon itération ( $1 $2 $3 .... ) à partir de la 2ème ligne avec " " comme séparateur.

    Merci de votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma commande | sed -n '2p' | sed -e 's/.* \(.*\) \(.*\) \(.*\)/\1 \2 \3/'
    si tu dois utiliser awk forcément, ba pas de chance

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 043
    Points
    31 043
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Amenos Voir le message
    Bonjours ,

    J'ai une commande du type : tata
    Résultat :
    toto: in1 in2 in3
    truc 0.1 0.2 0.3

    Je voudrais récupérer les valeur 0.1 0.2 0.3.

    J'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ma commande | /bin/awk '
        BEGIN {FS=" "}
        { printf ";%s", $2 }
          END { printf ("\n")}'
    Je n'arrive pas à faire comprend à awk de sauter la 1ère ligne pour commencer mon itération ( $1 $2 $3 .... ) à partir de la 2ème ligne avec " " comme séparateur.

    Merci de votre aide.
    Tu peux utiliser NR (numéro de la ligne courante) pour ne traiter que les lignes qui t'intéressent.
    Si tu arrives sur une ligne qui ne t'intéresse pas, tu peux appeler l'instruction "next" qui demande à awk d'arrêter de traiter la ligne en cours et de passer à la ligne suivante. Mais généralement, la technique la plus simple est de mettre du grep et du sed en amont pour filtrer et ne passer à awk que les infos que tu souhaites traiter.

    Et au lieu d'utiliser FS=" ", tu peux mettre -F' ' dans ta ligne de commande ce qui est plus souple d'utilisation...

  4. #4
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    NR correspond à la ligne courante. Tu peux dire de commencer la lecture à la ligne 2.
    Tu n'es pas oubligé de spécifier le réparateur si c'est l'espace car awk l'utilise par défaut comme séparateur.

    Ca donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma commande | /bin/awk 'BEGIN {NR == 2} {print $2} END {printf ("\n")}'

Discussions similaires

  1. [Script] Ignorer une ligne spécifique
    Par malik0 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 27/02/2012, 10h36
  2. Réponses: 0
    Dernier message: 22/05/2010, 13h18
  3. Réponses: 8
    Dernier message: 27/06/2008, 17h29
  4. SQL*Loader - Comment ignorer une ligne?
    Par domiq44 dans le forum Sql*Plus
    Réponses: 1
    Dernier message: 10/04/2008, 13h23
  5. SQL*Loader - Comment ignorer une ligne?
    Par domiq44 dans le forum SQL
    Réponses: 1
    Dernier message: 10/04/2008, 13h22

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