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 confirmé
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    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 chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    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
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    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 830
    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...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  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 : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    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")}'
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

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