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 :

recherche dans un programme .pc


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de gege87270
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Mai 2007
    Messages : 224
    Par défaut recherche dans un programme .pc
    C'est toujours moi avec un autre problème

    J'ai un bloc de commande dans un programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    printf ("%s/Erreur ORACLE:\n %.70s (%d)\n",message.arr
    , sqlca.sqlerrm.sqlerrmc, -sqlca.sqlcode);
    printf ("Num Commande % 5.0lf % 2.0lf % 4.0lf\n ",
    cdeent_n_aaaa_cpt, cdeent_n_mm_cpt, cdeent_n_cde);
    
    Jusque là rien d'extraordinaire, si ce n'est que je dois remplacer ce bloc par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ("Erreur ORACLE:\n %.70s (%d)\n", slaca.sqlerrm.sqlerrmc, -sqlca.sqlcode);
    J'ai un gros problème de syntaxe puisqu'à l'exécution j'ai les messages d'erreurs suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     awk : 0602-511 L'expression rÚguliÞre printf \(" ne peut pas contenir de nouvel
    le ligne.La ligne source est 32.
    Le contexte de l'erreur est
                    /printf \("%s\/Erreur ORACLE:\n %.70s (%d)\n",message.arr >>>
     <<<                , sqlca.sqlerrm.sqlerrmc, -sqlca.sqlcode);
     Erreur de syntaxeLa ligne source est 33.
            awk : 0602-542 Il y a un caractÞre ) de trop.
     awk : 0602-500 QuitterLa ligne source est 33.
    Quelqu'un pour un petit coup de main ???

  2. #2
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Tu n'a pas posté le code awk qui provoque l'erreur.

  3. #3
    Membre confirmé Avatar de gege87270
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Mai 2007
    Messages : 224
    Par défaut
    Voici comme demandé le code awk correspondant

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    for file in test.pc
    do
      cp $file $file.org
      awk '
    /#include <gestimpr.h>/ {
      print $0
      print "#include <userprog.h>  /* GF 01102007 */"
      next
    }
    /EXEC SQL INCLUDE sqlca.h;/ {
      print $0
      print "EXEC SQL INCLUDE bmtmain.h;  /* GF 01102007 */"
      next
    }
    /EXEC SQL BEGIN DECLARE SECTION;/{
      print $0
      print "/* GF 01102007 debut*/"
      print "VARCHAR sessionid [21],"
      print "        lib_err [2000],"
      print "        paragraphe_err [80];"
      print "int cd_ret;"
      print "/* GF 01102007 fin*/"
      next
    }
    /char[ \t]+TcSortie\[80\];\/\* nom du fichier de sortie \*\//{
      print $0
      print "char   lib_err1[2000];  /*GF 01102007*/"
      next
    }
    /fclose\(Fp\);/{
      print "        /*fclose(Fp);   GF 01102007 */"
      print "        pclose (Fp);   GF 01102007"
      next
    }
    /errexit:/{
      print "        EXEC SQL ROLLBACK WORK; /* RELEASE;   GF 01102007 */"
      continue
    /return(0);/
      print "        /*return(0)*/"
      next
    }
    /system\(Lp\);/{
      print "        /*system(Lp);   GF 01102007 */"
      next
    }
    {
      print $0
    } ' $file.org | tr -d '\r' > $file
    done

  4. #4
    Membre confirmé Avatar de gege87270
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Mai 2007
    Messages : 224
    Par défaut
    Ne tiens pas compte du post précédent, la partie du awk qui ne fonctionne pas c'est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /EXEC SQL ROLLBACK WORK RELEASE;/{
      print "        EXEC SQL ROLLBACK WORK; /* RELEASE;   GF 01102007 */"
      continue
    /return(0);/
      print "        /*return(0)*/"
      next
    }

  5. #5
    Membre confirmé Avatar de gege87270
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Mai 2007
    Messages : 224
    Par défaut
    Décidement j'ai du mal ce matin.

    le bon awk est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /printf \("%s\/Erreur ORACLE:\n %.70s (%d)\n",message.arr
                   , sqlca.sqlerrm.sqlerrmc, -sqlca.sqlcode);
     printf ("Num Commande % 5.0lf % 2.0lf % 4.0lf\n ",
    cdeent_n_aaaa_cpt, cdeent_n_mm_cpt, cdeent_n_cde);/{
      print "printf (""Erreur ORACLE:\n %.70s (%d)\n"", slaca.sqlerrm.sqlerrmc, -sqlca.sqlcode);"
      next
    }
    /system\(Lp\);/{
      print "        /*system(Lp);   GF 01102007 */"
      next
    }
    On va y arriver

  6. #6
    Membre confirmé Avatar de gege87270
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Mai 2007
    Messages : 224
    Par défaut
    En fait j'ai fait quelques modif et ce que je souhaite réaliser est la chose suivante:

    Dans un fichier .pc j'ai deux lignes de code que je veux remplacer par une seule. Je sais remplacer une ligne par une autre ou par rien, mais je ne sais pas RECHERCHER 2 lignes.

    Moi je tape :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /EXEC SQL ROLLBACK WORK RELEASE;
     return(0);/{
      print "EXEC SQL ROLLBACK WORK; /*  RELEASE;   GF 01102007 */"
      next
    }
    et en erreur j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    servora10:/index/u3/bernard/prog> chmod +x modiftestawk.sh
    servora10:/index/u3/bernard/prog> modiftestawk.sh
     awk : 0602-511 L'expression rÚguliÞre EXEC SQL R ne peut pas contenir de nouvel
    le ligne.La ligne source est 50.
    Le contexte de l'erreur est
                    /EXEC SQL ROLLBACK WORK RELEASE; >>>
     <<<    return(0);/{
     Erreur de syntaxeLa ligne source est 51.
     awk : 0602-500 QuitterLa ligne source est 51.
    servora10:/index/u3/bernard/prog>
    Je bloque en fait sur la recherche...

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

Discussions similaires

  1. [Débutant] Programme de recherche dans un fichier texte
    Par Invité dans le forum C#
    Réponses: 3
    Dernier message: 08/03/2014, 17h30
  2. [PowerShell] Recherche d'un programme dans la base de registre
    Par maxime1452 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 25/05/2011, 13h47
  3. Réponses: 1
    Dernier message: 15/12/2009, 20h22
  4. Réponses: 0
    Dernier message: 25/08/2009, 14h40
  5. Petit souci de recherche dans mon programme
    Par jojo72000 dans le forum Débuter
    Réponses: 4
    Dernier message: 03/06/2008, 18h54

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