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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Sed] Modifier une ligne dans un .bat

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Sed] Modifier une ligne dans un .bat

n°1656623
r@phblues
Globe-trotter biologique
Posté le 11-12-2007 à 15:26:51  profilanswer
 

Je cherche a remplacer une ligne par une autre a l'aide de sed et je galère pour trouver la syntaxe.
 
Je m'explique. J'ai un fichier NETWORK.INI dans lequel je dois modifier une ligne (en fait changer le nom de la machine) a partir de mon autoexec.bat : "computername=123456ghost" où 123456 est une chaîne aléatoire générée dans une variable %rand% par un fichier random.exe qui lui marche bien.
 
Le code concerné dans mon .bat :  

Code :
  1. random 100 | nset rand=$1
  2. ECHO Changement du nom de machine
  3. REM Supprime la ligne contenant la chaine ghost
  4. sed -i '2d' NETWORK.INI
  5. ECHO Ajoute une nouvelle ligne de remplacement
  6. REM sed "/lanroot=/i\computername=ghost/%rand% \n" NETWORK.INI
  7. Pause


 
 :hello:


Message édité par r@phblues le 11-12-2007 à 15:27:18

---------------
Tibet libre !
mood
Publicité
Posté le 11-12-2007 à 15:26:51  profilanswer
 

n°1657016
r@phblues
Globe-trotter biologique
Posté le 12-12-2007 à 10:20:15  profilanswer
 

ça a l'air puissant sed... tellement puissant qu'on arrive pas a le faire marcher !  :sweat:


---------------
Tibet libre !
n°1657023
Elmoricq
Modérateur
Posté le 12-12-2007 à 10:30:29  profilanswer
 

man sed dans google pour avoir de la doc
 
Sinon je n'ai pas bien compris : tu veux remplacer quelle chaîne par quelle autre ?
Dans ton exemple, tu veux remplacer les lignes contenant "2d" par "computername=...." ?

n°1657032
r@phblues
Globe-trotter biologique
Posté le 12-12-2007 à 10:50:25  profilanswer
 

Je l'ai lu la doc, c'est ça qui m'inquiète...
 
Pour simplifier, je veux remplacer :
 
"computername=123456ghost" où 123456 est aléatoire,  
 
par  
 
"computername=%rand%ghost" ou la variable %rand% contient un chiffre aléatoire générée précédemment.


---------------
Tibet libre !
n°1657041
Elmoricq
Modérateur
Posté le 12-12-2007 à 10:58:45  profilanswer
 

Essaie avec :
 

sed "s/computername=[0-9]*ghost/computername=%rand%ghost/" ton_fichier > nouveau_fichier


Message édité par Elmoricq le 12-12-2007 à 11:30:39
n°1657070
r@phblues
Globe-trotter biologique
Posté le 12-12-2007 à 11:40:24  profilanswer
 

Ca roule en effet ! Comment résumer 3h de tests en 1 mn! :D
 
Pour faire le remplacement en place dans le fichier, j'ai essayé :  
 

Code :
  1. sed "s/computername=[0-9]*ghost/computername=%rand%ghost/" ton_fichier


mais ca fait le remplacement à l'écran et non dans le fichier...


---------------
Tibet libre !
n°1657073
Elmoricq
Modérateur
Posté le 12-12-2007 à 11:44:00  profilanswer
 

Tu ne peux pas remplacer directement dans le fichier. Même les quelques utilitaires qui te le proposent écrivent en fait dans un fichier temporaire, qu'ils utilisent ensuite pour remplacer l'ancien fichier.
 
Donc le plus simple, c'est de faire le sed > nouveau_fichier, suivi d'un move nouveau_fichier ancien_fichier.

n°1657100
r@phblues
Globe-trotter biologique
Posté le 12-12-2007 à 12:19:44  profilanswer
 

Bon tout marche nickel, merci à toi !
 
Pour info voila mon script :

Code :
  1. ECHO Changement du nom de machine en ghost%rand%
  2. sed 's/computername=ghost[0-9]*/computername=ghost%rand%/' NETWORK.INI > NETWORK2.INI
  3. DEL NETWORK.INI
  4. REN NETWORK2.INI NETWORK.INI


Message édité par r@phblues le 12-12-2007 à 12:20:05

---------------
Tibet libre !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Sed] Modifier une ligne dans un .bat

 

Sujets relatifs
PhpMyAdmin - modifier l'enregistrement suivantMacro Taille Ligne
Modifier directement l'exe sans recompilersimuler l'autocomplétion en ligne de commande ? [RESOLU]
probleme de saut de ligne[j2ME] Emulateur J2ME En ligne
[SQL] Afficher un certain nombre de donnée dans 1 ligne d'un tableau[Xslt] Perte des retours à la ligne d'un noeud texte
modifier un texte dynamiquement en phpModifier les données EXIF d'une photo sous PHP
Plus de sujets relatifs à : [Sed] Modifier une ligne dans un .bat


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