sed 's/$/<br>/' mytext.txt
可以工作,但可以在命令行上输出。我希望它只是在指定的文件本身进行替换。我应该使用其他工具吗?用于在线替换文件中所有换行符的unix命令行使用<br> n
sed 's/$/<br>/' mytext.txt
可以工作,但可以在命令行上输出。我希望它只是在指定的文件本身进行替换。我应该使用其他工具吗?用于在线替换文件中所有换行符的unix命令行使用<br> n
如果你已经GNU sed中,你可以使用-i
选项,它会做更换到位。
sed -i 's/$/<br>/' mytext.txt
否则,您将不得不重定向到另一个文件并将其重命名为旧的。
sed 's/$/<br>/' mytext.txt > mytext.txt.new && mv mytext.txt.new mytext.txt
使用重定向符号即
sed 's/$/<br>/' mytext.txt > mytext2.txt && mv mytext2.txt mytext.txt
如果你有一个上最新sed
,只需用sed -i
或sed --in-place
,这将修改实际的文件本身。
如果你想备份,你需要为它提供一个后缀。因此sed -i.bak
或sed --in-place=.bak
将创建一个.bak
后缀的备份文件。
使用此!认真!由于错误地输入sed
命令或错误地假设文件中的数据,您在第一次损坏文件时会非常感激。
这实际上是一个新的启示。我根本没有意识到这一点。感谢您的洞察力paxdiablo! – DrMHC 2010-08-17 04:45:08
只是为了完整。在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)看:
“编辑文件与脚本编辑的文本编辑器”,
哎呦 - 当然!感谢您的快速回复! – DrMHC 2010-08-17 02:20:12