想查找替换一个文件夹下的所有文件,写了一个shell脚本,出现的问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
zezhou
帖子: 6
注册时间: 2008-12-10 23:30
送出感谢: 0
接收感谢: 0

想查找替换一个文件夹下的所有文件,写了一个shell脚本,出现的问题

#1

帖子 zezhou » 2009-02-11 11:23

代码如下:

1 #!/bin/bash
2
3 #传入参数
4 read -p "请输入被替换的字符串" sPreg
5 read -p "请输入要替换成的字符串" sVar
6
7 #正则匹配
8
9 grep -rl '$sPreg' ./* --color=never | xargs sed -i 's/$sPreg/$sVar/g'


运行后不成功,但我单独在bash下运行 grep -rl '$sPreg' ./* --color=never | xargs sed -i 's/$sPreg/$sVar/g'这一句是成功的。
我刚学shell编程,请教问题何在?
gududehuo
帖子: 92
注册时间: 2008-05-25 22:58
送出感谢: 0
接收感谢: 1 次

Re: 想查找替换一个文件夹下的所有文件,写了一个shell脚本,出现的问题

#2

帖子 gududehuo » 2009-02-11 12:36

我绝对新手,
#!/bin/bash
read -p "请输入被替换的字符串" sPreg
read -p "请输入要替换成的字符串" sVar
ls ./* | grep "$sPreg" | sed "s/$sPreg/$sVar/g"
不知道是不是你要的效果
gududehuo
帖子: 92
注册时间: 2008-05-25 22:58
送出感谢: 0
接收感谢: 1 次

Re: 想查找替换一个文件夹下的所有文件,写了一个shell脚本,出现的问题

#3

帖子 gududehuo » 2009-02-11 13:17

哦。好像吧你的意思理解错了,你的意思是在文件夹下找到匹配行的文件,并把找到的文件的匹配行修改成你想要的是吧。
grep -rl “$sPreg” ./* --color=never | xargs sed -i “s/$sPreg/$sVar/g“
你的引号用错了,
还有脚本不要和要处理文件放在一起,否则可能把脚本都改了。
zezhou
帖子: 6
注册时间: 2008-12-10 23:30
送出感谢: 0
接收感谢: 0

Re: 想查找替换一个文件夹下的所有文件,写了一个shell脚本,出现的问题

#4

帖子 zezhou » 2009-02-11 19:05

谢谢,问题解决~
回复

回到 “Shell脚本”