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 :

Incrémenter un chiffre contenu dans un fichier à partir d'un Makefile


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué Avatar de awesomeman
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 166
    Points : 136
    Points
    136
    Par défaut Incrémenter un chiffre contenu dans un fichier à partir d'un Makefile
    Bonsoir ,
    Ce que je demande est plutot compliqué (enfin je trouve).

    voilà j'ai un Makefile et un fichier (.vers) dans lequel il y a un seul caractère (un chiffre).
    je veux récupérer ce chiffre dans mon Makefile, l'incrémenter et replacer le nouveau chiffre dans le fichier
    Voilà ce que j'ai fais pour l'instant, je pense etre proche du but mais bon ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @expr $('cat .vers') + 1 > .vers
    je pense que le contenu de .vers n'est pas pris en compte car celui ci est toujours à 1 (ou 3 si je change 1 par 3 par exemple), bref le valeur de $('cat .vers') est toujours null pourtant il y a bien un chiffre dans le fichier ..
    Merci pour votre aide , bonne soirée

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mv -f .vers .old_vers
    awk '(NR==1){$1++;}1' .old_vers >.vers
    A toi d'adapter au format du makefile.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Membre habitué Avatar de awesomeman
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 166
    Points : 136
    Points
    136
    Par défaut
    Merci , je viens de tester.
    j'ai un synthax error sur le ';' ..


    on est d'accord , je ne fais rien de mal ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    archive:
               mv -f .vers .old_vers
               awk '(NR==1){$1++;}1' .old_vers > .vers
               @tar -cvvf backup.tgz $(SRC)

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Quand le savant montre la lune, l'imbécile regarde le doigt.
    Ce n'est pas le message d'erreur complet.
    Le message d'erreur complet montre clairement un "++" dans le vide.
    Pourquoi ? Car le $1 a été interprété et remplacé.
    Il faut protéger le $ dans le Makefile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    archive:
    	mv -f .vers .old_vers
    	awk '(NR==1){$$1++;}1' .old_vers > .vers
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Membre habitué Avatar de RaphaelG
    Homme Profil pro
    Amateur
    Inscrit en
    Juin 2016
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Juin 2016
    Messages : 94
    Points : 183
    Points
    183
    Par défaut
    Pour rester dans ta 1ère idée avec la commande expr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public$ cat .vers
    3
    Public$ expr `cat .vers` + 1 > .vers
    Public$ cat .vers
    4
    Public$
    Bien sûr, je pars du principe que ton fichier .vers ne contient qu'une valeur numérique. Après tu peux chiader le script et tester le contenu initial de .vers avec awk.
    IMHO, you should RTFM ASAP. IHTH.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Ça alors! Je viens de tester (sous OSX)... et ça marche!

    J'aurais parié (mais pas trop quand même) qu'il fallait passer par un fichier intermédiaire, comme proposé par Flodelarab?!

    Je croyais que la redirection '>' allait écraser le fichier avant qu'il ne soit lu

    Y a pourtant bien des cas où ça arrive que le fichier soit écrasé, non?

  7. #7
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Personnellement, je ne le tenterais pas.
    Il y a une version de awk (gawk ?) qui accepte l'option -i pour modifier le fichier en place (comme pour sed). Mais je ne sais jamais laquelle.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  8. #8
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 427
    Points : 43 044
    Points
    43 044
    Par défaut
    Modifier un Makefile avec des commandes système, même si ça fonctionne, n'est pas forcément la meilleure pratique.
    Je suis pas spécialiste des Makefile mais il doit y avoir moyen de stocker cette valeur dans un fichier externe qui sera appelé par le Makefile par un include (enfin sur le principe).

    Enfin sous réserve que se soit applicable à ton cas.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  9. #9
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 788
    Points
    30 788
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Modifier un Makefile avec des commandes système, même si ça fonctionne, n'est pas forcément la meilleure pratique.
    Il ne modifie pas un Makefile, il modifie un fichier .vers depuis un Makefile...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  10. #10
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 427
    Points : 43 044
    Points
    43 044
    Par défaut
    J'ai peut être compris de travers.

    je veux récupérer ce chiffre dans mon Makefile
    C'est pas faisable avec un include ?
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

Discussions similaires

  1. [Python 2.X] Compter des chiffres contenu dans un fichier CSV avant import Excel
    Par Invité dans le forum Général Python
    Réponses: 2
    Dernier message: 01/11/2014, 08h21
  2. [Batch] Supprimer des fichiers à partir d'une liste contenu dans un fichier txt
    Par damsmut dans le forum Scripts/Batch
    Réponses: 10
    Dernier message: 15/11/2012, 10h23
  3. Réponses: 1
    Dernier message: 07/04/2011, 20h28
  4. Réponses: 4
    Dernier message: 01/12/2005, 01h01
  5. Réponses: 5
    Dernier message: 16/03/2005, 22h17

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