[Shell] Insertion ligne dans un fichier avec sed...

Insertion ligne dans un fichier avec sed... [Shell] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 14-04-2004 à 23:18:41    

Bonsoir,
 
J'ai besoin d'un ptit coup de pouce sur un pti bout de script shell...
 
En gros j'veux constituer un fichier à partir d'un modèle en modifiant quelques lignes...
 
Donc j'ai besoin de modifier la ligne ou est inscrit "db_name=DEFAULT" par "db_name=$ORACLE_SID" (c'est ok çà), puis de rajouter les lignes "instance_name=$ORACLE_SID" et "service_names=$ORACLE_SID" (that is the problem!).
 
Le soucis c'est que l'insertion de mes 2 sauts de ligne pose problème, je trouve pas l'expression qui va bieng...
 
j'ai essayé avec \r , \<newline> \\ , et pas mal d'autres trucs mais j'y parviens pas, malgré pas mal de tutoriaux et d'aides parcourus  [:spamafote]
 
j'ai çà en code :
 

Code :
  1. cat $ORACLE_HOME/dbs/init.ora | sed -e "s/db_name=DEFAULT/db_name=$ORACLE_SID<retour_ligne>instance_name=$ORACLE_SID<retour_ligne>service_names=$ORACLE_SID/" > init$ORACLE_SID.ora


 
:jap:


Message édité par LaTeX_ le 14-04-2004 à 23:19:16
Reply

Marsh Posté le 14-04-2004 à 23:18:41   

Reply

Marsh Posté le 14-04-2004 à 23:22:37    

A tout hasard \n ? (a moins que ca soit pareil que <newline> que je connais pas)

Reply

Marsh Posté le 14-04-2004 à 23:25:44    

déjà essayé malheureusement ;)

Reply

Marsh Posté le 15-04-2004 à 13:07:09    

Ceci devrait faire l'affaire :

Code :
  1. sed -e  "/db_name=DEFAULT/{
  2. s/db_name=DEFAULT/db_name=$ORACLE_SID
  3. a \\
  4. instance_name=$ORACLE_SID
  5. service_names=$ORACLE_SID/
  6. }" $ORACLE_HOME/dbs/init.ora > init$ORACLE_SID.ora


---------------
Jean Pierre.
Reply

Marsh Posté le 15-04-2004 à 14:14:39    

aigles a écrit :

Ceci devrait faire l'affaire :

Code :
  1. sed -e  "/db_name=DEFAULT/{
  2. s/db_name=DEFAULT/db_name=$ORACLE_SID
  3. a \\
  4. instance_name=$ORACLE_SID
  5. service_names=$ORACLE_SID/
  6. }" $ORACLE_HOME/dbs/init.ora > init$ORACLE_SID.ora

 


 
je testerais çà ce soir  :jap:

Reply

Marsh Posté le 15-04-2004 à 23:52:40    

Bon, une chose est sed ne s'apprivoise pas facilement, ou alors j'comprends pas bien sa philosophie :D
 
j'ai cette erreur avec ta commande aigles :
 

Code :
  1. sed: -e expression #1, char 52: Unterminated `s' command


 
J'ai cherché l'erreur, mais je n'y parviens pas, j'ai essayé d'autres fàçon, mais j'parviens toujours à rien  :(
 
question ptete bete mais bon c'est pour mieux dormir ce soir :D :
 
il faut bien que je respecte scrupuleusement tes sauts de lignes, vue que la partie "a \\" doit ajouter les deux lignes suivantes?

Reply

Marsh Posté le 16-04-2004 à 08:50:56    

Toutes mes excuses, il manque un / pour terminer la commande de substitution

Code :
  1. sed -e  "/db_name=DEFAULT/{
  2. s/db_name=DEFAULT/db_name=$ORACLE_SID/
  3. a \\
  4. instance_name=$ORACLE_SID
  5. service_names=$ORACLE_SID/
  6. }" $ORACLE_HOME/dbs/init.ora > init$ORACLE_SID.ora


Message édité par aigles le 16-04-2004 à 08:51:38

---------------
Jean Pierre.
Reply

Marsh Posté le 16-04-2004 à 19:52:01    

aigles a écrit :

Toutes mes excuses, il manque un / pour terminer la commande de substitution

Code :
  1. sed -e  "/db_name=DEFAULT/{
  2. s/db_name=DEFAULT/db_name=$ORACLE_SID/
  3. a \\
  4. instance_name=$ORACLE_SID
  5. service_names=$ORACLE_SID/
  6. }" $ORACLE_HOME/dbs/init.ora > init$ORACLE_SID.ora




 
bon il y avait une ptite erreur lorsque je réutilisais ton script à cause du / dans l'avant dernière ligne... j'ai tout remis à plat et le code final donne çà :
 

Code :
  1. sed -e  "/db_name=DEFAULT/{
  2. s/db_name=DEFAULT/db_name=$ORACLE_SID/
  3. a \\
  4. service_name=$ORACLE_SID
  5. a \\
  6. instance_name=$ORACLE_SID
  7. }" $ORACLE_HOME/dbs/init.ora > $REP_INSTALL_BASE/$ORACLE_SID/admin/pfile/init$ORACLE_SID.ora


 
Par contre la moindre indentation/espace du code après les a \\ çà donne une indentation/espace aussi au final :/
 
Merci à toi de m'avoir mis  sur la voie !
 
edit: trois jour (enfin soirée :D) que je cherchais à faire çà quand même!  :pt1cable:


Message édité par LaTeX_ le 16-04-2004 à 19:56:16
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed