如何使用Linux sed 命令将Shell的参数传进去写在文件里

比如,我在bash里面执行脚本./re.sh1234567就可以将文件cc.c里的#defineVER0,改成#defineVER1234567求教!... 比如,我在bash里面执行脚本 ./re.sh 1234567
就可以将文件cc.c里的 #define VER 0 , 改成#define VER 1234567

求教!
展开
 我来答
kaixingui2012
2015-04-07 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6445万
展开全部
re.sh:
#只需要在脚本中写这一行就可以了 -i可以修改原文件
sed  -i 's/define VER  0/define VER  $1/' cc.c
追问
不行哦,#define VER  0 这之间不一定一个空格啊,匹配不到
追答

上面语句有问题,正确应该写成如下:

echo "sed  -i 's/define  *VER  *0/define VER  ${1}/' cc.c" | sh
注意*前面要有两个空格,这样就会匹配到相应的数据了。试一下,如有问题,再交流
yss624_
2015-04-07 · TA获得超过4.7万个赞
知道大有可为答主
回答量:9775
采纳率:77%
帮助的人:2569万
展开全部
sed -i "s/#define VER 0/#define VER $1/" cc.c
要用双引号,不能是单引号。
追问
不行哦,#define VER  0 这之间不一定一个空格啊,匹配不到
追答
sed -r -i "s/#define\s+VER\s+0/#define VER $1/" cc.c
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式