免费注册 查看新帖 |

Chinaunix

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

sed 的pattern 为变量的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-30 16:15 |只看该作者 |倒序浏览
不好意思,我还有问题求教:
我有个文件 filename 里的内容是每行一个域名如:
.offratel.nc
adsl.sky.cz
static.ew.hu

我需要在它的每行前后插入信息,成为格式如下:
<domain  id="1211439408283">.offratel.nc</domain>
<domain  id="1211439408284">.adsl.sky.cz</domain>
<domain  id="1211439408285">.static.ew.hu</domain>

其中,ID号为从1211439408283开始的,每个数字增值为1 的数。如果该ID数值为固定的,我可以如下写出:
sed -e 's/^/">/g' hostsdeny  -e 's/$/<\/domain>/g'  -e "s/^/1211439408282/g" -e 's/^/<domain  id="/g'

可由于是变化的数值,我怎么都没成功。请问,那个数字1211439408282那里,我用expr $i + 1或其它方式,都没有成功。

#!/bin/sh
i=1211439408282
sed -e 's/^/">/g' hostsdeny  -e 's/$/<\/domain>/g'  -e "s/^/`{expr $i + 1}`/g" -e 's/^/<domain  id="/g'

我该怎么修改那里呢?谢谢了啊!

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
2 [报告]
发表于 2008-05-30 16:27 |只看该作者

回复 #1 braverman 的帖子

用awk吧.
awk '{print "<domain  id=\""1211439408282+NR"\">"$0"</domain>"}' filename

不过由于1211439408282较大,你可能需要将这个分开下..
如.
awk '{print "<domain  id=\"121143940"8282+NR"\">"$0"</domain>"}' filename


  1. $ more 111.txt
  2. /usr/local:
  3. 123412341234
  4. 12341324
  5. 12341234
  6. 123413413
  7. 23413132
  8. 12313
  9. $ awk '{print "<domain  id=\"121143940"8282+NR"\">"$0"</domain>"}' 111.txt
  10. <domain  id="1211439408283">/usr/local:</domain>
  11. <domain  id="1211439408284">123412341234</domain>
  12. <domain  id="1211439408285">12341324</domain>
  13. <domain  id="1211439408286">12341234</domain>
  14. <domain  id="1211439408287">123413413</domain>
  15. <domain  id="1211439408288">23413132</domain>
  16. <domain  id="1211439408289">12313</domain>
复制代码

[ 本帖最后由 liaosnet 于 2008-5-30 16:28 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-05-30 16:37 |只看该作者
啊,真的可以了。我还折腾了一天。真的非常非常感谢liaosnet 啊

论坛徽章:
0
4 [报告]
发表于 2008-05-30 16:38 |只看该作者

try

  1. awk '{str=sprintf("<domain  id=\"%.f\"></domain>",1211439408283+(n++));print str}' file
复制代码

论坛徽章:
0
5 [报告]
发表于 2008-05-30 16:45 |只看该作者
原帖由 err7dd 于 2008-5-30 16:38 发表
awk '{str=sprintf("",1211439408283+(n++));print str}' file


非常感谢您的回答哦~呵呵, 其中漏了域名,修改了如下即可了:

awk '{str=sprintf("<domain  id=\"%.f\">"$0"</domain>",1211439408283+(n++));print str}' hostsdeny

谢谢哦~~

论坛徽章:
0
6 [报告]
发表于 2008-05-30 17:03 |只看该作者

回复 #5 braverman 的帖子

疏忽了。。。

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
7 [报告]
发表于 2008-05-30 17:16 |只看该作者

回复 #5 braverman 的帖子

问个不关题目的私人问题~~~LZ的资料是 女, 但不像是女~~~

论坛徽章:
0
8 [报告]
发表于 2008-06-02 10:06 |只看该作者
原帖由 liaosnet 于 2008-5-30 17:16 发表
问个不关题目的私人问题~~~LZ的资料是 女, 但不像是女~~~



哈哈哈,我这么惨?问个问题,连性别都变了?为什么会有你这个结论啊?可否悄悄告诉我呀:

论坛徽章:
0
9 [报告]
发表于 2013-11-08 22:10 |只看该作者
楼主现在是个什么水平,我才刚学shell

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
10 [报告]
发表于 2013-11-08 22:15 |只看该作者
回复 9# 小C_笑话
没看到楼主已经有一年多没登录了吗?

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP