LinuxSir.cn,穿越时空的Linuxsir!

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

sed如何使替换后的文本保存下来[已解决]

[复制链接]
发表于 2005-1-17 22:44:27 | 显示全部楼层 |阅读模式
's/xxx/xxxxx/' 这样的参数只能使文本暂时的在内存中改变重新输入 more filename时 发现并没有真正的改变我想改变的行 还是原来的行,究竟要用什么参数才能达到我的需要呢?或用其他的命令 谢谢各位老大的指教~~
发表于 2005-1-17 22:54:42 | 显示全部楼层
把结果重定向到一个文件中
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-17 23:10:34 | 显示全部楼层
具体命令是什么啊? 谢谢! 我想修改的是/etc/passwd窝? 如果重定向不是没用了吗?
回复 支持 反对

使用道具 举报

发表于 2005-1-17 23:27:03 | 显示全部楼层
Post by 哈哈
具体命令是什么啊? 谢谢! 我想修改的是/etc/passwd窝? 如果重定向不是没用了吗?

直接用vim不就可以么?

  1. vim file<<! 2>/dev/null
  2. :%s/old/new/
  3. :wq!
  4. !
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-1-18 00:51:57 | 显示全部楼层
awk, sed等编辑器都是stream editor. 是对输出结果进行编辑的。 如果要使源文件修改,有两种方法:
1. sed/awk完之后重定向输出到另一个文件,检查无误了后,替换源文件。(如版主kiron兄所说)
2. 现代sed有-i开关, 如 sed -i cmd...用-i 开关可以使直接将更改写入源文件。(参看sed的manpage)
回复 支持 反对

使用道具 举报

发表于 2005-1-18 01:38:21 | 显示全部楼层
还有ed呀!vim呀,perl呀,都可以直接修改原文件的,
回复 支持 反对

使用道具 举报

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

本版积分规则

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