LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1714|回复: 17

用sed替换文件内文本问题

[复制链接]
发表于 2006-8-30 09:48:24 | 显示全部楼层 |阅读模式
本人因为要修改多个文件内的帐号开始接触sed,找到个修改文本的命令

sed -e 's/account1/account2/g'

这样执行后,为什么修改的结果只在终端上显示,而没有修改文件内的内容呢?
要修改文件内的内容应该怎么写?
发表于 2006-8-30 10:11:03 | 显示全部楼层
sed -i -e 's/account1/account2/g'  file
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-30 10:38:46 | 显示全部楼层
sed -i 怎么提示说没有这个参数?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-30 11:12:56 | 显示全部楼层
貌似是版本过低
除了这个参数之外还有什么办法没有?
回复 支持 反对

使用道具 举报

发表于 2006-8-30 11:53:03 | 显示全部楼层
sed is a stream editor and it default writes to stdout. Make sure you do the right replacement before using -i.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-30 12:50:53 | 显示全部楼层
主机上的sed没有 -i参数,所以这条路行不通拉
不知还有其它方法没
回复 支持 反对

使用道具 举报

发表于 2006-8-30 13:09:06 | 显示全部楼层
可以用redirect+tmp file的方法嘛。
回复 支持 反对

使用道具 举报

发表于 2006-8-30 13:34:26 | 显示全部楼层
本人的原贴-------------------------------------------------------
重定向:
sed -e 's/account1/account2/g'  file > file
-------------------------------------------------------------

9楼提醒得太关键了,应该这样:
# sed -e 's/account1/account2/g'  file > tmpfile
# mv tmpfile file
回复 支持 反对

使用道具 举报

发表于 2006-8-30 14:06:10 | 显示全部楼层
楼上,重定向发生在sed之前,故会摧毁原文件,必须先重定向到临时文件。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-30 15:04:54 | 显示全部楼层
不能一步搞定吗?
很多个文件,岂不是要写很多条语句?
ps:写道临时文件后最后一行没有换行符的话,临时文件里面会丢失最后一行,那又怎么解决呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表