[SHELL] Extraction et remplacement chaine

Résolu/Fermé
xavdoug Messages postés 21 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 16 novembre 2007 - 21 avril 2007 à 15:34
xavdoug Messages postés 21 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 16 novembre 2007 - 21 avril 2007 à 19:01
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
21 avril 2007 à 15:48
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 samedi 21 avril 2007 Statut Membre Dernière intervention 16 novembre 2007
21 avril 2007 à 16:10
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
21 avril 2007 à 16:18
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 samedi 21 avril 2007 Statut Membre Dernière intervention 16 novembre 2007
21 avril 2007 à 16:22
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
21 avril 2007 à 17:51
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 samedi 21 avril 2007 Statut Membre Dernière intervention 16 novembre 2007
21 avril 2007 à 18:41
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
21 avril 2007 à 18:48
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 samedi 21 avril 2007 Statut Membre Dernière intervention 16 novembre 2007
21 avril 2007 à 19:01
Merci beaucoup pour ton aide,
tout fonctionne maintenant parfaitement.

:-)
0