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 :

sed programme c++


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 294
    Points : 128
    Points
    128
    Par défaut sed programme c++
    Bonjour,

    J'aimerais utiliser la commande sed. afin de remplacer xy. par l'argument de
    ./a.out (argument) lors de l'exécution du programme C++ suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include <iostream>
    using namespace std;
     
    double f(double x, double y)
    {
    return xy;
    }
     
    int main()
    {
    cout << f(1,1) << endl;
    }
    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Bonjour.

    Tout d'abord, pourquoi ne pas directement utiliser les arguments passés à a.out en C++ ?

    Secondo, C++ est un langage compilé ... changer le code avec un sed tout en cours d'exécution n'est donc pas possible (fin si le code aura changé mais pas le comportement du programme lancé juste avant la transformation du code)...

    Joyeuses fêtes,
    Idriss

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 294
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Merci.

    Pour le premièrement, je ne vois pas bien comment faire, je sais donner la valeur d'une variable avec int m=atoi(argv[1]); mais pas changer le xyci-dessus.

    Pour le deuxièmementt, je peux faire un script bash qui modifie le code avant la compilation
    (mais je ne sais pas comment on fais cela non plus.

  4. #4
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    $ cat file.cpp 
    #include <iostream>
    using namespace std;
     
    double f(double x, double y)
    {
    return xy;
    }
     
    int main()
    {
    cout << f(1,1) << endl;
    }
    user@home:~/Documents/sandbox$ sed -i 's/xy/whatever/g' file.cpp 
    user@home:~/Documents/sandbox$ cat file.cpp 
    #include <iostream>
    using namespace std;
     
    double f(double x, double y)
    {
    return whatever;
    }
     
    int main()
    {
    cout << f(1,1) << endl;
    }
    Désolé si je suis à côté de la plaque, je n'ai tout saisi précisément.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 294
    Points : 128
    Points
    128
    Par défaut
    Merci beaucoup.

    La seule chose que je ne comprends pas c'est l'utilisation du g,
    j'ai fais sans et ca marche.

    J'utilise plutot un fichier intermédiaire sinon
    à la deuxième utilisation cela ne marche plus comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed  s/contenu/$1/ <second.hpp.in> second.hpp

  6. #6
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Bonsoir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed [-options...] "s/<pattern à transformer>/<valeur de substitution>/[g..."
    Le "g" indique qu'il faut faire la substitution sur toutes les occurrences correspondant au pattern à transformer, sans quoi le changement ne s'opère que sur la première occurrence.

    Pour effectuer un changement dans le fichier directement, il faut utiliser l'option -i comme ceci :

    Pour modifier dans un fichier temporaire (fichier => fichier.tmp par exemple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i.tmp "expr" fichier
    man sed pour en savoir plus

    Cordialement,
    Idriss

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 294
    Points : 128
    Points
    128
    Par défaut
    Merci beaucoup.

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

Discussions similaires

  1. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  2. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  3. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05
  4. Comment débuter en programmation ?
    Par Marc Lussac dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2002, 11h29
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

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