Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1473 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°456005
LaTeX_
Pôôôpaa !
Posté le 14-04-2004 à 23:18:41  profilanswer
 

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
mood
Publicité
Posté le 14-04-2004 à 23:18:41  profilanswer
 

n°456011
AirbaT
Connection timed out
Posté le 14-04-2004 à 23:22:37  profilanswer
 

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

n°456014
LaTeX_
Pôôôpaa !
Posté le 14-04-2004 à 23:25:44  profilanswer
 

déjà essayé malheureusement ;)

n°456264
aigles
Posté le 15-04-2004 à 13:07:09  profilanswer
 

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.
n°456304
LaTeX_
Pôôôpaa !
Posté le 15-04-2004 à 14:14:39  profilanswer
 

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:

n°456881
LaTeX_
Pôôôpaa !
Posté le 15-04-2004 à 23:52:40  profilanswer
 

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?

n°457123
aigles
Posté le 16-04-2004 à 08:50:56  profilanswer
 

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.
n°457837
LaTeX_
Pôôôpaa !
Posté le 16-04-2004 à 19:52:01  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

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

 

Sujets relatifs
[Fluxbox] Fichier init écrasé à chaque redémarrageavoir un recap des disk/partitions/systemes de fichier en ligne de com
[shell] classer des fichiers par taillefichier vide et pourtant non
urpmi ne pas installer un fichier[free et shell] .?
[script] Comment inserer un fichier dans un autre?Problème : "réparation des systèmes de fichier"
[shell] Supprimer les espaces d'un fichier [resolu] 
Plus de sujets relatifs à : [Shell] Insertion ligne dans un fichier avec sed...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR