免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3652 | 回复: 10
打印 上一主题 下一主题

请教linux 批处理修改配置文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-26 12:50 |只看该作者 |倒序浏览
写了一个批处理脚本

需要修改几个conf文件


我使用sed -i 's/  替换了一些参数

但是有些关键词行   在本文中有多处关键词出现  这样替换就会替换多个关键词  

所以请教下这种情况如何处理  , 我想可以检索两行关键词 然后替换  然后命令不会写。


举例
sed -i 's#output_buffering = Off#output_buffering = On#' /usr/local/php/etc/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 50M/g' /usr/local/php/etc/php.ini

修改PHP这些都是全文只有一个的关键词 所以替换不会出现问题

但是修改其他的
basedir=
datadir=
这些文件中好几处出现关键词  所以不能关键词替换 求解~{:3_198:}

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
2 [报告]
发表于 2011-01-26 14:17 |只看该作者
在你的匹配串最后加g,全局替换
就像你的第二个例子那样

论坛徽章:
0
3 [报告]
发表于 2011-01-26 16:17 |只看该作者
可以用匹配吗?用法如:
sed -i '/post_max_size/s/post_max_size = 8M/post_max_size = 50M/g' /usr/local/php/etc/php.ini

论坛徽章:
0
4 [报告]
发表于 2011-01-26 17:32 |只看该作者
回复 1# xvyaoni

要的是这个?
    cat php.bak
output_buffering = Off
123
output_buffering = Off
456
output_buffering = Off
$sed -i '1,2s/Off/On/' php.bak
cat php.bak
output_buffering = On
123
output_buffering = Off
456
output_buffering = Off
行如果不确定就得模式匹配了,贪婪匹配得处理下。

论坛徽章:
0
5 [报告]
发表于 2011-01-26 18:00 |只看该作者
本帖最后由 xvyaoni 于 2011-01-26 18:02 编辑
回复  xvyaoni

要的是这个?
    cat php.bak
output_buffering = Off
123
output_buffering = Off ...
shileiadmin 发表于 2011-01-26 17:32



    不确定是哪一行  最后还是用的模糊匹配

论坛徽章:
0
6 [报告]
发表于 2011-01-26 18:29 |只看该作者
回复 5# xvyaoni

默认就是匹配一行
    sed -i 's/output_buffering = Off/output_buffering = On/' php.bak
不过我这个好像有点问题
sed 's/output_buffering = Off/output_buffering = On/' php.bak
output_buffering = On
123
output_buffering = On
456
output_buffering = On

GNU sed version 4.1.5

论坛徽章:
0
7 [报告]
发表于 2011-01-26 19:04 |只看该作者
回复  xvyaoni

默认就是匹配一行
    sed -i 's/output_buffering = Off/output_buffering = On/' php ...
shileiadmin 发表于 2011-01-26 18:29



    哦,默认是匹配每行的第一个,我再去看一遍基础12篇~

论坛徽章:
0
8 [报告]
发表于 2011-01-26 20:43 |只看该作者
写了一个批处理脚本

需要修改几个conf文件


我使用sed -i 's/  替换了一些参数

但是有些关键词行 ...
xvyaoni 发表于 2011-01-26 12:50


sed -i ':a;$!{N;ba};s/output_buffering = Off/output_buffering = On/' urfile

论坛徽章:
0
9 [报告]
发表于 2011-01-27 15:26 |只看该作者
学习了就来个小结:
[shileiadmin@LINUX ~]$ sed 's/a/b/' urfile
b a a
b a a
b a a
[shileiadmin@LINUX ~]$ sed 's/a/b/2' urfile
a b a
a b a
a b a
[shileiadmin@LINUX ~]$ sed '1s/a/b/' urfile
b a a
a a a
a a a
[shileiadmin@LINUX ~]$ sed '2s/a/b/' urfile
a a a
b a a
a a a
[shileiadmin@LINUX ~]$ sed '2s/a/b/g' urfile
a a a
b b b
a a a
[shileiadmin@LINUX ~]$ sed '2s/a/b/2' urfile
a a a
a b a
a a a
[shileiadmin@LINUX ~]$ cat urfile
a a a
a a a
a a a
[shileiadmin@LINUX ~]$

论坛徽章:
0
10 [报告]
发表于 2011-01-31 22:13 |只看该作者
不加g句是匹配一行啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP