免费注册 查看新帖 |

Chinaunix

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

大家新年好,请教一个关于shell sed 写入ini ? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-27 09:46 |只看该作者 |倒序浏览
关于在shell 下用 sed 来写入INI 文件,下面这个请大家看看为何无法运行:



     sed -i "/^\[$2\]/,/^\[/ {/^\[$2\]/b;/^\[/b;s/^$3[]*=.*/$3=$4/g;}" $1
运行 信息:

   
sed: -e expression #1, char 46: unterminated `s' command

请大家帮忙看看哪里有错

谢谢

论坛徽章:
0
2 [报告]
发表于 2012-01-27 10:56 |只看该作者
只是帮忙顶

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
3 [报告]
发表于 2012-01-27 11:01 |只看该作者
回复 1# cccccc
  1. s/^$3\[\]*=.*/$3=$4/g
复制代码

论坛徽章:
0
4 [报告]
发表于 2012-01-27 11:30 |只看该作者
本帖最后由 cccccc 于 2012-01-27 11:33 编辑

谢谢

按你的修改了。。还是没替换写入


sed -ne "/^\['$2'\]/,/^\[/ {/^\['$2'\]/b;/^\[/b;s/^'$3'\[\]*=.*/'$3'='$4'/g;}" $1



ini.ini
[config]

ip=10.0.0.1

[disk_cfg]

disk_name=/dev/sdb
  

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
5 [报告]
发表于 2012-01-27 12:26 |只看该作者
本帖最后由 jason680 于 2012-01-27 12:43 编辑

set -x
-----------------------------

$ cat ini.sh
set -x
sed -ne "/^\['$2'\]/,/^\[/p" $1

$ bash ini.sh ini.ini config
+ sed -ne '/^\['\''config'\''\]/,/^\[/p' ini.ini

$ vi ini.sh
$ cat ini.sh
set -x
sed -ne "/^\[$2\]/,/^\[/p" $1

$ bash ini.sh ini.ini config
+ sed -ne '/^\[config\]/,/^\[/p' ini.ini
[config]

ip=10.0.0.1

[disk_cfg]

论坛徽章:
0
6 [报告]
发表于 2012-01-27 13:29 |只看该作者
本帖最后由 cccccc 于 2012-01-27 13:42 编辑

???



编调试了没提示错误。。还是无法替换


root@route:~# sed -i "/^\['config'\]/,/^\[/ {/^\['config'\]/b;/^\[/b;s/^'disk'\[\]*=.*/'disk'='aaaa'/g;}" ini.ini
+ sed -i '/^\['\''config'\''\]/,/^\[/ {/^\['\''config'\''\]/b;/^\[/b;s/^'\''disk'\''\[\]*=.*/'\''disk'\''='\''aaaa'\''/g;}' ini.ini

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
7 [报告]
发表于 2012-01-27 13:36 |只看该作者
回复 4# cccccc


    变量不要用单引号括起来,直接用
   

论坛徽章:
0
8 [报告]
发表于 2012-01-27 13:48 |只看该作者
  1. '\''disk'\''='\''aaaa'\''/g;}' ini.ini

  2. 这里在g 的后面加了个 p 是可以添加了。。是另重一行添加了。不是替换原有的。。

  3. '\''disk'\''='\''aaaa'\''/g;p}' ini.ini
复制代码

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
9 [报告]
发表于 2012-01-27 13:58 |只看该作者
what do you want to do ?
[ config ] 中只有ip,又没有disk.....

论坛徽章:
0
10 [报告]
发表于 2012-01-27 14:05 |只看该作者
呵呵。楼上兄弟我只是在机器做了个测试。。ini 里改了个disk 做测试。祝大家了新年好。。。。。我自己解决了。。知道问题出在哪里了。。为了感谢大家。。。

我现在整一下。。做成函数再发了。。。。。。shell 下的简单 ini 文件的 读定操作。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP