免费注册 查看新帖 |

Chinaunix

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

求助,用sed替换文件中的变量问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-09 18:10 |只看该作者 |倒序浏览
大家好,有个问题请教一下,现在有个test.conf文件,里面内容如下:
COUNT[1]=1
COUNT[2]=1
COUNT[3]=1
等等

经过筛选,会选出把哪一个的COUNT的值替换到,比如:
idx=2,就把COUNT[2]=1替换成COUNT[2]=2

sed是这样写的:
sed -i -e "s/${COUNT[${idx}]}/${value}/g" ./test.conf

但这样会全部替换了

COUNT[1]=2
COUNT[2]=2
COUNT[3]=2

有谁知道如何修改?只根据idx修改,谢谢了!

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
2 [报告]
发表于 2011-02-09 18:23 |只看该作者
idx=3,就把COUNT[2]=1替换成COUNT[3]=3?

论坛徽章:
0
3 [报告]
发表于 2011-02-09 18:53 |只看该作者
本帖最后由 java_html 于 2011-02-09 20:47 编辑
  1. sed 's/\(COUNT\['$idx'\]\)=1/\1='$value'/g'  test.conf
复制代码
试试,我在本机上是可以的

论坛徽章:
0
4 [报告]
发表于 2011-02-09 20:40 |只看该作者
本帖最后由 jiangjingjiu 于 2011-02-09 20:58 编辑

回复 1# jiangjingjiu


比如idx=3,就是COUNT[3]=1的值替换成COUNT[3]=${value}
楼上大哥的代码用不了啊,哪位大哥指点一下,谢谢

谢谢啦,呵呵,搞定了

sed -i -e "s/COUNT\[${idx}\]=${count}/COUNT\[${idx}\]=${new_count}/g" ./test.conf

论坛徽章:
1
天秤座
日期:2013-10-23 13:20:42
5 [报告]
发表于 2011-02-10 02:45 |只看该作者
[monitor@Test]$ more file.txt
COUNT[1]=1
COUNT[2]=1
COUNT[3]=1

[monitor@Test]$ idx=2
[monitor@Test]$ value=2
[monitor@Test]$ echo "$idx  $value"
2  2
[monitor@Test]$ sed 's/^\(COUNT\['"$idx"'\]=\)\(.\)/\1'"$value"'/' file.txt
COUNT[1]=1
COUNT[2]=2
COUNT[3]=1
[monitor@Test]$ idx=3
[monitor@Test]$ value=5
[monitor@Test]$ echo "$idx  $value"
3  5
[monitor@Test]$ sed 's/^\(COUNT\['"$idx"'\]=\)\(.\)/\1'"$value"'/' file.txt
COUNT[1]=1
COUNT[2]=1
COUNT[3]=5

论坛徽章:
0
6 [报告]
发表于 2011-02-10 08:13 |只看该作者
本帖最后由 justlooks 于 2011-02-10 08:16 编辑

  1. $ (idx=2;value=5;sed -r "s/(COUNT\[${idx}\]=).*$/\1${value}/" aa)
  2. COUNT[1]=1
  3. COUNT[2]=5
  4. COUNT[3]=1
复制代码

  1. perl -p -ne 'my ($idx,$value)=(2,5);s/(?<=$idx]=)\d+/$value/;' < ufile
  2. COUNT[1]=1
  3. COUNT[2]=5
  4. COUNT[3]=1
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP