[SHELL] Extraction et remplacement chaine

Résolu
xavdoug Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -  
xavdoug Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

J'ai un soucis de programmation Shell (csh). Voilà :

J'ai 2 fichiers : un fichier fichier.txt et un fichier fichier_old.txt.
Les 2 fichiers contiennent chacun une ligne "variable = qqchose", et qqchose = 0 dans fichier.txt.

Je désire modifier fichier.txt en remplacant "variable = ce qu'il y a dans fichier.txt par "variable = ce qu'il y a dans fichier_old.txt" sans modifier le reste ...
Je précise que le string variable ne se trouve qu'à un seul endroit ce qui simplifie le problème.

J'ai deja essayé plusieurs choses du genre :
perl -i -pe 's/variable = 0/$`grep variable fichier_old.txt`/g' fichier.txt , mais la commande n'interprète pas le résultat de grep ...
Est-ce que quelqu'un pourrait m'aider ? Ce serait très gentil de votre part ...

Merci d'avance !!!
A voir également:

6 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
Hi
et comme cela:
perl -i -pe 's/variable = 0/$'`grep variable fichier_old.txt`'/g' fichier.txt
0
xavdoug Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
Salut dubcek,

Tout d'abord, merci de ta réponse ...
Je viens d'essayer, et malheureusement ça ne marche toujours pas ...
N'y aurait-il pas un moyen avec awk ?
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
et sans le $

perl -i -pe 's/variable = 0/'`grep variable fichier_old.txt`'/g' fichier.txt
0
xavdoug Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
Et non, ça ne marche toujours pas ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Essaie avec "sed" :
[jp@MDK xavdoug]$ cat fich.txt
bla bla bla
variable=0
bla bla bla
bli bli bli

[jp@MDK xavdoug]$ cat old_fich.txt
bla bla bla
variable=quelquechose
bla bla bla
bli bli bli

[jp@MDK xavdoug]$ sed 's/variable=0/'$(grep variable old_fich.txt)'/' fich.txt

bla bla bla
variable=quelquechose
bla bla bla
bli bli bli

[jp@MDK xavdoug]$
;-))
0
xavdoug Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
Salut jipicy,

Merci de ta réponse, mais malheureusement ça ne marche pas.
J'ai de mon côté, essayé la commande :

sed "s/variable=0/$(grep variable old_fich.txt)/g" fich.txt

Il m'affiche la bonne ligne à l'écran (variable = qqchose) ce qui veut dire qu'il interprète bien la commande grep, mais le fich.txt n'est pas modifié.

Je continue à chercher ..
Merci de me le signaler si vous avez une autre idée.
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Re-

Il faut utiliser le switch "-i" (in place) de la commabde "sed" (GNU-sed = version 3.02 et +) :
sed -i.bak "s/variable=0/$(grep variable old_fich.txt)/g" fich.txt 
le ".bak" c'est pour faire une sauvegarde de l'ancien fichier.

;-))
0
xavdoug Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup pour ton aide,
tout fonctionne maintenant parfaitement.

:-)
0