question sur sed - Linux et OS Alternatifs
Marsh Posté le 26-08-2002 à 14:42:54
sed "s/toto/tata/g" toto > tmptoto && mv -f tmptoto toto
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 ...
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
Marsh Posté le 26-08-2002 à 14:49:26
Moi même j'ai jamais trouvé de solution.
Lire un fichier, le piper vers une autre commande, puis rediriger la sortie vers ce même fichier, ça résulte en un fichier vide
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 ?
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
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
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.
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