LinuxSir.cn,穿越时空的Linuxsir!

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

sed 's/viking/hq/' sh_1不能实现替换?

[复制链接]
发表于 2005-12-16 13:43:19 | 显示全部楼层 |阅读模式
写了一个脚本,功能如下:对某个文件夹里的所有文件,只要有sh_ 开头的,都要把里面的“viking”
替换为“hq”  如下:
find /home/viking/temp/del/ -name "sh_*" -print -exec sed 's/viking/hq/' {} \;

然后输出如下:
/home/viking/temp/del/1/sh_1
hq is terry
/home/viking/temp/del/11/sh_11
hq is terry
/home/viking/temp/del/112/sh_112
hq is terry
/home/viking/temp/del/1123/sh_1123
hq is terry


可是我:
[viking@localhost del]$ cat 1123/sh_1123
viking is terry
[viking@localhost del]$ cat 112/sh_112
viking is terry
[viking@localhost del]$ cat 11/sh_11
viking is terry
发表于 2005-12-16 14:56:26 | 显示全部楼层
没有输出重定向吧?
回复 支持 反对

使用道具 举报

发表于 2005-12-16 15:20:42 | 显示全部楼层

ed can do

Post by terrylai
写了一个脚本,功能如下:对某个文件夹里的所有文件,只要有sh_ 开头的,都要把里面的“viking”
替换为“hq”  如下:

然后输出如下:


可是我:

  1. for file in `find  . -name "sh_*"`;do  echo -e "g/viking/s//hq/g\nw\nq" | ed $file ; done
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-16 16:46:56 | 显示全部楼层
谢谢3楼的,说句题外话,你的头像是克拉克吧?我打kof2000时很喜欢用克拉克。
回复 支持 反对

使用道具 举报

发表于 2005-12-16 19:55:52 | 显示全部楼层
find /home/viking/temp/del/ -name "sh_*" -print -exec sed -i 's/viking/hq/' {} \;

楼主少了一个参数而已。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-16 21:58:14 | 显示全部楼层
谢谢终极幻想/黯然销魂,原来差一个参数而已
回复 支持 反对

使用道具 举报

发表于 2005-12-17 00:18:41 | 显示全部楼层
用vim也可
回复 支持 反对

使用道具 举报

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

本版积分规则

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