免费注册 查看新帖 |

Chinaunix

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

sed中如何使用变量,替换掉与变量名一致的内容 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-23 16:42 |只看该作者 |倒序浏览
如mm.txt
sdfjkdjfkdjf$name1dfdfdfds$name2
dfdfdsfdsfdsf$name3dfjdfkdj$name4dfkdjf$name4

而$name1=22
$name2=11
...
要求将mm.txt文件里的$name1,$name2...替换成22,11并保存为新文件

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
2 [报告]
发表于 2008-10-23 16:45 |只看该作者

回复 #1 heroinhell 的帖子

sed 's/$name1/22/g;s/$name2/11/g' urfile > newfile

sed 's/$name1/'$name1'/g;s/$name2/'$name2'/g' urfile > newfile

[ 本帖最后由 blackold 于 2008-10-23 16:46 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-10-23 16:47 |只看该作者
发错了

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
4 [报告]
发表于 2008-10-23 16:48 |只看该作者

回复 #3 merlin852 的帖子

我理解LZ源文件就是字面的$name1 和 $name2。这样的话,不应该用双引号啊。

论坛徽章:
6
数据库技术版块每日发帖之星
日期:2015-10-11 06:20:00数据库技术版块每日发帖之星
日期:2015-10-12 06:20:00数据库技术版块每日发帖之星
日期:2015-10-15 06:20:00数据库技术版块每日发帖之星
日期:2015-10-30 06:20:00综合交流区版块每月发帖之星
日期:2015-12-02 14:59:01数据库技术版块每日发帖之星
日期:2015-12-15 06:20:00
5 [报告]
发表于 2008-10-23 16:52 |只看该作者
sed 's/$name1/'$name1'/g;s/$name2/'$name2'/g'  filename>newfilename

论坛徽章:
0
6 [报告]
发表于 2008-10-23 16:55 |只看该作者
sed 's/$name1/'$name1'/g;s/$name2/'$name2'/g' urfile > newfile
这个应该能实现,但问题是name不知道有多少个,
sed 's/$name'$counter'/'$name'$counter'/g;
想要表达这样的内容

论坛徽章:
0
7 [报告]
发表于 2008-10-23 17:03 |只看该作者
经检验,上面写的通不过

论坛徽章:
6
数据库技术版块每日发帖之星
日期:2015-10-11 06:20:00数据库技术版块每日发帖之星
日期:2015-10-12 06:20:00数据库技术版块每日发帖之星
日期:2015-10-15 06:20:00数据库技术版块每日发帖之星
日期:2015-10-30 06:20:00综合交流区版块每月发帖之星
日期:2015-12-02 14:59:01数据库技术版块每日发帖之星
日期:2015-12-15 06:20:00
8 [报告]
发表于 2008-10-23 17:05 |只看该作者
[root@1 ~]#  cat aa
sdfjkdjfkdjf$name1dfdfdfds$name2
dfdfdsfdsfdsf$name3dfjdfkdj$name4dfkdjf$name4
[root@1 ~]# name1=22
[root@1 ~]# name2=11
[root@1 ~]# sed 's/$name1/'$name1'/g;s/$name2/'$name2'/g' aa
sdfjkdjfkdjf22dfdfdfds11
dfdfdsfdsfdsf$name3dfjdfkdj$name4dfkdjf$name4
[root@1 ~]#

论坛徽章:
0
9 [报告]
发表于 2008-10-23 17:07 |只看该作者
sed 's/$name1/'$name1'/g;s/$name2/'$name2'/g' urfile > newfile
这个应该能实现,但问题是name不知道有多少个,
sed 's/$name'$counter'/'$name'$counter''/g';
想要表达这样的内容


感谢各位,我说的是这行代码

[ 本帖最后由 heroinhell 于 2008-10-23 17:13 编辑 ]

论坛徽章:
6
数据库技术版块每日发帖之星
日期:2015-10-11 06:20:00数据库技术版块每日发帖之星
日期:2015-10-12 06:20:00数据库技术版块每日发帖之星
日期:2015-10-15 06:20:00数据库技术版块每日发帖之星
日期:2015-10-30 06:20:00综合交流区版块每月发帖之星
日期:2015-12-02 14:59:01数据库技术版块每日发帖之星
日期:2015-12-15 06:20:00
10 [报告]
发表于 2008-10-23 17:16 |只看该作者
grep -Eo '\$name[0-9]+'  file>.tmp
for x in `cat .tmp`
do

...
done
不行?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP