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 les commentaires d'un fichier


Sujet :

Linux

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 12
    Points : 8
    Points
    8
    Par défaut awk - ignorer les commentaires d'un fichier
    Bonjour !

    J'utilise awk pour analyser un fichier texte et en tirer des variables que j'ai mises ligne par ligne.
    Mais voila, j'aimerais pouvoir ajouter à mon fichier des lignes de commentaires au début pour indiquer aux utilisateurs la structure à respecter. Comment faire pour que awk ignore les lignes commençant par un certain caractère (en l'ocurrence # pour faire original...) ?

    Mon fichier présente des lignes de 3 variables chacune, voici une de mes lignes awk où je récupère les variables pour générer une commande ant pour chaque ligne lue que je lance par la suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gendoc=$(awk '{print "echo \"**** Generating doc for "$1" in ../$dirname/"$2"\" && ant generatedoc -Dproject.dir=../$dirname/"$2" -Dname.file="$3" && "}' to-generate.properties)
    eval $gendoc
    Merci d'avance pour votre aide

  2. #2
    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 wildmary Voir le message
    Bonjour !

    J'utilise awk pour analyser un fichier texte et en tirer des variables que j'ai mises ligne par ligne.
    Mais voila, j'aimerais pouvoir ajouter à mon fichier des lignes de commentaires au début pour indiquer aux utilisateurs la structure à respecter. Comment faire pour que awk ignore les lignes commençant par un certain caractère (en l'ocurrence # pour faire original...) ?

    Mon fichier présente des lignes de 3 variables chacune, voici une de mes lignes awk où je récupère les variables pour générer une commande ant pour chaque ligne lue que je lance par la suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gendoc=$(awk '{print "echo \"**** Generating doc for "$1" in ../$dirname/"$2"\" && ant generatedoc -Dproject.dir=../$dirname/"$2" -Dname.file="$3" && "}' to-generate.properties)
    eval $gendoc
    Merci d'avance pour votre aide
    Ben awk est un langage donc ça se programme. Tu inities une boucle sur ta ligne et si tu trouves un "#" tu sautes le reste de la ligne.

    Mais moi, je filtrerais plutôt ça par un grep en amont et ainsi, mon script awk recevrait un flux entrant épuré des lignes de commentaires...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    merci pour les idées
    la solution du grep m'a l'air pas mal mais je débute en shell, je ne suis pas sûre de voir comment faire

  4. #4
    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 wildmary Voir le message
    merci pour les idées
    la solution du grep m'a l'air pas mal mais je débute en shell, je ne suis pas sûre de voir comment faire
    grep -v "^#" fichier => te renvoie les lignes de "fichier" ne commençant pas par "#"
    donc te suffit de faire grep -v "^#" fichier |awk '{...}' et awk ne récupère que les lignes ne commençant pas par "#"...

    Bon, ça gèrera pas les commentaires en milieu de ligne mais c'est déjà un bon début

    Sinon voici les tutoriels shell pour Linux : http://linux.developpez.com/cours/

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    genial, merci mille fois, je m'y arraichais les cheveux
    je ne savais pas qu'on pouvait ajouter le awk comme ça, à la suite.
    pour les commentaires ce sera amplement suffisant, pas besoin d'en mettre en fin de ligne.

    merci aussi pour le doc, je m'en vais potasser ça

  6. #6
    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 wildmary Voir le message
    je ne savais pas qu'on pouvait ajouter le awk comme ça, à la suite.
    C'est le principe des pipes. Toute commande prend en entrée standard ce qui vient du clavier et renvoie ses résultats à l'écran. Et le pipe permet de rediriger le résultat d'une commande (l'écran) vers l'entrée d'une seconde (le clavier). Ainsi les commandes Unix sont vues comme des briques modulaires que tu peux utiliser quand t'en as besoin

    Exemple
    grep "/home" /etc/passwd |sort |tr '[:lower:]' '[:upper:]' |cut -f1 -d:

    Le grep extrait les lignes contenant "/home"
    Le sort trie ces lignes
    Le tr les transforme en majuscule
    Le cut extrait le premier champ (le login)

    Chaque commande Unix ne fait qu'un seul truc très basique mais en les associant on peut arriver à des appli complexes...

Discussions similaires

  1. Supprimer les commentaires d'un fichier source
    Par Roland Chastain dans le forum Langage
    Réponses: 9
    Dernier message: 21/02/2013, 05h52
  2. Eliminer les commentaires d'un fichier c
    Par hafed22 dans le forum C
    Réponses: 6
    Dernier message: 30/12/2012, 14h09
  3. Réponses: 1
    Dernier message: 15/10/2012, 14h56
  4. SVN - Ignorer les modifications d'un fichier
    Par mioux dans le forum Outils
    Réponses: 0
    Dernier message: 12/01/2011, 10h00
  5. Réponses: 3
    Dernier message: 07/10/2008, 19h49

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