question sur sed

question sur sed - Linux et OS Alternatifs

Marsh Posté le 26-08-2002 à 14:39:57    

alors voilà, mon probleme,  
exemple, j'ai un fichier /tmp/toto avec comme contenu "toto"
 
si je fais un  
 
sed -e s/toto/tata/g toto
il me ressort tata en sortie sans probleme
 
ce que je voudrais, c'est non seulement qu'il me le mette en sortie, mais qu'en plus il modofie le fichier, comme le ferait avec :  
 
cat /tmp/toto | sed -e s/toto/tata/g > /tmp/toto
 
 
j'ai rien trouvé ds le man de sed
merci de votre aide


Message édité par korny le 26-08-2002 à 14:40:23
Reply

Marsh Posté le 26-08-2002 à 14:39:57   

Reply

Marsh Posté le 26-08-2002 à 14:41:36    

faut passer par un fichier intermediaire

Reply

Marsh Posté le 26-08-2002 à 14:42:54    

sed "s/toto/tata/g" toto > tmptoto  && mv -f tmptoto toto


Message édité par superX le 26-08-2002 à 14:49:10
Reply

Marsh Posté le 26-08-2002 à 14:46:08    

justement c ca que j'aimerais éviter, surtout que bon, si y'a une option ou une solution, je pense que c ce que fera sed
 
le probleme , c que j'essaye de combiner ca ds une commande find
 
find . -maxdepth 1 -type f -exec sed -e s/toto/tata/g {} \;  
 
et le pb c que je c pas tro comment bosser avec des temporaires ds mon find ... :/

Reply

Marsh Posté le 26-08-2002 à 14:47:00    

je me lance la dedans, alors, si y'a pas d'options ni d'autre solution, merci :hello:

Reply

Marsh Posté le 26-08-2002 à 14:49:26    

Moi même j'ai jamais trouvé de solution.
Lire un fichier, le piper :D vers une autre commande, puis rediriger la sortie vers ce même fichier, ça résulte en un fichier vide  :sweat:

Reply

Marsh Posté le 26-08-2002 à 14:53:39    

cat toto | sed "s/toto/tata/" | tee toto

Reply

Marsh Posté le 26-08-2002 à 15:05:13    

le tee fonctionne comme la redirection ds le fichier ?
parce que il parait que c pas conseillé du tout de faire un
 
cat toto | sed s/toto/tata/g > toto
 
est ce que tee fonctionne pareil ?

Reply

Marsh Posté le 26-08-2002 à 15:06:16    

essaie ta commande et essaie avec tee.  
 
sinon je viens de trouver un truc de dingue :  
 
 find . -type f -print | while read file; do vi  $file > /dev/null 2>&1 <<! (faire enter ici )
> :%s,tata,titi,g
> :wq
> !
> done
 
 
http://www.unixreview.com/document [...] /0103h.htm


Message édité par superX le 26-08-2002 à 15:25:56
Reply

Marsh Posté le 26-08-2002 à 15:06:29    

et qui marche (testé)

Reply

Marsh Posté le 26-08-2002 à 15:06:29   

Reply

Marsh Posté le 26-08-2002 à 15:14:05    

superX a écrit a écrit :

essaie ta commande et essaie avec tee.  




 
les 2 fonctionnent c clair, mais je veux pas utiliser ma commande de cat toto ... >  toto  juste car c déconseillé (écriturre ds un fichier ouvert)
 
tee c clair, ca marche, mais comment il fonctionne ... pff j'en c rien
 
sinon c clair que là ton vi, oui ca le fait carrément .. j'essaye ca de suite :hello:

Reply

Marsh Posté le 26-08-2002 à 15:24:26    

yes, c royal, ca marche , je v utiliser ca
merci !

Reply

Marsh Posté le 26-08-2002 à 18:32:02    

Le cat toto | sed -e s/titi/tata/g > toto ce n'est pas seulement déconseillé, ça ne marche pas tout simplement pas. Tu peux obtenir ce que tu veux sur de petits fichiers, mais avec un fichier plus gros ça finira toujours par foirer.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed