|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : août 2005 Messages : 82 ![]() |
Bonjour,
je viens de découvir la commande PERL suivante qui permet de modifier le contenu d'un fichier. perl -pi -e 's#<chaine de caractère à remplacer>#<chaine de caractère de remplacement>#g' <nom des fichiers> y a-t-il l'équivalent en sed ou awk ? j'entends d'éviter de créer un fichier pour ensuite le renommer Merci |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Inscription : décembre 2006 Messages : 271 ![]() |
Code :
sed -i -e 's#<chaine de caractère à remplacer>#<chaine de caractère de remplacement>#g' FILE |
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : août 2005 Messages : 82 ![]() |
je suis en KSH sous AIX je n'ai pas l'option -i
en awk ce n'est pas possible ? |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : mars 2002 Messages : 946 ![]() |
Le problème n'est pas le shell( ksh), mais le sed utilisé. Si ton sed ne possède pas l'option -i, il n'est pas dur d'écrire un script ou un alias pour le simuler, en passant par un fichier temporaire.
Et awk n'est pas prévu pour remplacer le travail de sed. À ma connaissance, il ne possède pas d'équivalent du -i, et la syntaxe est plus lourde pour faire un simple remplacement de regexp. |
|
|
00
|
|
|
#5 | ||
![]() ![]() R&D en systemes informatiques bas niveau Unix/Linux Inscription : mai 2004 Messages : 5 497 ![]() |
Bonjour,
sed ou awk permettent de faire des traitements, mais ne permettent pas, sauf option particulière, de travailler sur le fichier d'entrée. La seule solution dans ce cas est de passer par un fichier temporaire : Code :
|
||
|
|
00
|
|
|
#6 |
|
Membre à l'essai
![]() Inscription : août 2005 Messages : 82 ![]() |
Merci de vos réponses
donc il n'y a que PERL qui permet de modifier un fichier en entrée. c'est dommage je trouve de devoir toujours créer des fichiers temporaires pour après les deleter... Sur MVS par exemple, dans un JCL un fichier temporaire s'appelle &&quelquechose et il est supprimer automatiquement en fin d'execution
__________________
############ # KSH sous AIX # ############ |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Inscription : mars 2002 Messages : 946 ![]() |
Pour information, Gnu sed (qui possède l'option -i) travaille sur un fichier temporaire et le copie ensuite (ou le déplace, selon que l'on souhaite un backup ou non). Je ne serais pas surpris si perl faisait la même chose.
Edit : après test, je viens de voir que perl a le même comportement : il n'y a pas besoin des droits en écriture pour utiliser -i. C'est donc trivial à simuler. Donc, fais un script ou un alias qui fasse la même chose de façon transparente. C'est pas compliqué et ça rend des services quand on utilise un sed très basique. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com