Remplacement caractère fichiers CSH
Résolu
bdssssss
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
bdssssss Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
bdssssss Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je viens de poser une question dans un autre post pour le remplacement d'un caractère dans un fichier sur une ligne particulière. J'ai eu la réponse, ça marchait bien :
https://forums.commentcamarche.net/forum/affich-25896692-remplacement-caractere-fichiers#p25896823
Or, je travaille en csh, et quand j'ai voulu taper la même commande en csh que celle que je tapais dans mon terminale (donc en sh) (sed '/texte/ {s/chaine_a_remplacer/nouvelle_chaine/}' fichier.txt), cela ne fonctionne plus.
Quelle est la subtilité?
Merci beaucoup!!
Je viens de poser une question dans un autre post pour le remplacement d'un caractère dans un fichier sur une ligne particulière. J'ai eu la réponse, ça marchait bien :
https://forums.commentcamarche.net/forum/affich-25896692-remplacement-caractere-fichiers#p25896823
Or, je travaille en csh, et quand j'ai voulu taper la même commande en csh que celle que je tapais dans mon terminale (donc en sh) (sed '/texte/ {s/chaine_a_remplacer/nouvelle_chaine/}' fichier.txt), cela ne fonctionne plus.
Quelle est la subtilité?
Merci beaucoup!!
A voir également:
- Remplacement caractère fichiers CSH
- Remplacement coco - Accueil - Réseaux sociaux
- Caractère ascii - Guide
- Coco.fr remplacement - Accueil - Réseaux sociaux
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
2 réponses
Salut,
Le shell n'a rien à voir avec ton problème dans la mesure où c'est "sed" qui fait le travail.
Peut être serait-il bien que tu précises ton système ainsi que la version de "sed".
Le shell n'a rien à voir avec ton problème dans la mesure où c'est "sed" qui fait le travail.
Peut être serait-il bien que tu précises ton système ainsi que la version de "sed".
Merci.
- La version de sed est la version 4.2.1 (j'ai fait "man sed" pour voir ça).
- Concernant mon système, je travaille sous linux GNOME. Je ne sais pas quelle information tu veux avoir en particulier...
- La version de sed est la version 4.2.1 (j'ai fait "man sed" pour voir ça).
- Concernant mon système, je travaille sous linux GNOME. Je ne sais pas quelle information tu veux avoir en particulier...
Linux Gnome ce n'est pas un système, Linux est un noyau et Gnome un bureau graphique ;-(
Quelle distribution ? Ubuntu ? Debian ? Fedora ? etc.
Sinon il n'y a pas de raison que ça ne marche pas avec "csh", la preuve :
Quelle distribution ? Ubuntu ? Debian ? Fedora ? etc.
Sinon il n'y a pas de raison que ça ne marche pas avec "csh", la preuve :
$ csh % sed '/texte/ {s/chaine_a_remplacer/nouvelle_chaine/}' plop ... blablabla : chaine_a_remplacer texte : nouvelle_chaine blablabla : chaine_a_remplacer ... % exit $
Merci pour ta réponse. Désolé, je ne suis pas trop calé en informatique. Ma distribution est debian...
Mais je pense avoir trouvé la source de mon problème! En fait, je tape la commande :
set arg1 = 'chaine_a_remplacer'
set arg2 = 'nouvelle_chaine'
sed -e ' /texte/ {s/$arg1/$arg2/g}' fichier.txt
Cette commande ne fonctionne pas (avec les arguments $arg1 et $arg2). Remarque : Si je fais echo $arg1 et $arg2, les arguments sont bien définis.
En revanche, quand je tape :
sed -e ' /texte/ {s/chaine_a_remplacer/nouvelle_chaine/g}' fichier.txt
ça marche. Autrement dit, quand je n'utilise pas de variable avec les "$". Tu aurais une idée?
Mais je pense avoir trouvé la source de mon problème! En fait, je tape la commande :
set arg1 = 'chaine_a_remplacer'
set arg2 = 'nouvelle_chaine'
sed -e ' /texte/ {s/$arg1/$arg2/g}' fichier.txt
Cette commande ne fonctionne pas (avec les arguments $arg1 et $arg2). Remarque : Si je fais echo $arg1 et $arg2, les arguments sont bien définis.
En revanche, quand je tape :
sed -e ' /texte/ {s/chaine_a_remplacer/nouvelle_chaine/g}' fichier.txt
ça marche. Autrement dit, quand je n'utilise pas de variable avec les "$". Tu aurais une idée?
Ben voila quand on explique clairement son problème on y voit bien mieux ;-)
Ton problème vient des variables qui ne sont pas interprétées dans l'expression à cause des quotes simples qui l'entourent ;-(
Deux solutions :
- Soit tu entoures l'expression avec des quotes doubles :
- Soit tu laisses les quotes simples, mais il faut à ce moment là sortir de l'expression et re-rentrer par la suite :
Ton problème vient des variables qui ne sont pas interprétées dans l'expression à cause des quotes simples qui l'entourent ;-(
Deux solutions :
- Soit tu entoures l'expression avec des quotes doubles :
sed -e " /texte/ {s/$arg1/$arg2/g}" fichier.txt
- Soit tu laisses les quotes simples, mais il faut à ce moment là sortir de l'expression et re-rentrer par la suite :
sed -e ' /texte/ {s/'"$arg1"'/'"$arg2"'/g}' fichier.txt