2010-08-17 2 views

Répondre

10

, vous pouvez utiliser l'option -i, qui fera le remplacement en place.

sed -i 's/$/<br>/' mytext.txt 

Sinon, vous devrez rediriger vers un autre fichier et le renommer par-dessus l'ancien.

sed 's/$/<br>/' mytext.txt > mytext.txt.new && mv mytext.txt.new mytext.txt 
+0

oups - bien sûr! Merci pour la réponse rapide! – DrMHC

0

Utilisez Si vous avez le symbole sed Gnu de redirection à savoir

sed 's/$/<br>/' mytext.txt > mytext2.txt && mv mytext2.txt mytext.txt 
1

Si vous avez une mise à jour sed, il suffit d'utiliser sed -i ou sed --in-place, qui modifiera le fichier réel lui-même.

Si vous voulez une sauvegarde, vous devez fournir un suffixe pour cela. Donc, sed -i.bak ou sed --in-place=.bak va créer un fichier de sauvegarde avec le suffixe .bak.

Utilisez ceci! Sérieusement! Vous l'apprécierez beaucoup la première fois que vous endommagerez votre fichier en raison d'une commande erronée sed ou d'une mauvaise supposition concernant les données du fichier.

+1

C'est en fait une nouvelle révélation. Je n'étais pas au courant de cela du tout. Merci pour votre perspicacité paxdiablo! – DrMHC

3

Juste pour l'exhaustivité. Sous Mac OS X (qui utilise FreeBSD sed), vous devez utiliser un null-chaîne supplémentaire « » pour en place l'édition de fichiers sans sauvegarde:

sed -i "" 's/$/<br>/' mytext.txt 

Comme alternative à l'utilisation de Sed sans sauvegarde en place Pour éditer les fichiers, vous pouvez utiliser ed (1), qui lit cependant le fichier entier en mémoire avant de fonctionner dessus.

printf '%s\n' H 'g/$/s//<br>/g' ',p' | ed -s test.file # print to stdout 

printf '%s\n' H 'g/$/s//<br>/g' wq | ed -s test.file # in-place file edit 

Pour plus d'informations sur ed (1) voir:

"Édition de fichiers avec l'éditeur de texte ed à partir de scripts",

http://wiki.bash-hackers.org/doku.php?id=howto:edit-ed

Questions connexes