2010-08-17 20 views

回答

10

如果你已经GNU sed中,你可以使用-i选项,它会做更换到位。

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

否则,您将不得不重定向到另一个文件并将其重命名为旧的。

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

哎呦 - 当然!感谢您的快速回复! – DrMHC 2010-08-17 02:20:12

0

使用重定向符号即

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

如果你有一个上最新sed,只需用sed -ised --in-place,这将修改实际的文件本身。

如果你想备份,你需要为它提供一个后缀。因此sed -i.baksed --in-place=.bak将创建一个.bak后缀的备份文件。

使用此!认真!由于错误地输入sed命令或错误地假设文件中的数据,您在第一次损坏文件时会非常感激。

+1

这实际上是一个新的启示。我根本没有意识到这一点。感谢您的洞察力paxdiablo! – DrMHC 2010-08-17 04:45:08

3

只是为了完整。在Mac OS X(使用FreeBSD的SED),你必须使用一个额外的空串“”就地文件编辑,而不备份:

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

作为替代使用的sed就地无备份文件编辑,你可以使用ed(1),然而,在操作它之前,它将整个文件读入内存。

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 

欲了解更多有关ED(1)看:

“编辑文件与脚本编辑的文本编辑器”,

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

相关问题