免费注册 查看新帖 |

Chinaunix

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

[文本处理] 查找字符串的数字并运算 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-05 00:30 |只看该作者 |倒序浏览
有个文件有如下内容,要求把数字提出来然后再乘上2.5并保存起来,应该如何做?
转换前:
test:layout_width="191pixes"  
test:layout_height="25pixes"  
转换后
test:layout_width="478pixes"  
test:layout_height="63pixes"  

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


    awk -F\" '{print $1 $2*2.5 "pixes\""}'

论坛徽章:
1
辰龙
日期:2014-05-22 11:38:58
3 [报告]
发表于 2012-08-05 11:02 |只看该作者
  1. $ awk -vRS='[0-9]+' '{printf("%s%d", $0, int(RT * 2.5) + 1)}' urfile
  2. test:layout_width="478pixes"  
  3. test:layout_height="63pixes"
复制代码

论坛徽章:
0
4 [报告]
发表于 2012-08-06 10:30 |只看该作者
楼上想法 另辟蹊径  学习了~

论坛徽章:
0
5 [报告]
发表于 2012-08-06 10:46 |只看该作者
本帖最后由 noshape 于 2012-08-06 10:47 编辑

回复 3# winway1988
$ awk -vRS='[0-9]+' '{printf("%s%d", $0, int(RT * 2.5) + 1)}' urfile

这个的结果是
test:layout_width="1pixes"  
test:layout_height="1pixes"

RT的值是0,不知道是为什么

论坛徽章:
0
6 [报告]
发表于 2012-08-06 10:58 |只看该作者
回复 2# yinyuemi
回复 1# noshape 

    awk -F\" '{print $1 $2*2.5 "pixes\""}'

因为我的文本还有其他内容,比如
test:layout_width="191pixes"  
test:layout_height="25pixes"
test:id="@+id/albumalbum"
在我电脑上,跑上面的脚本后会变成
test:layout_width=477.5pixes"
test:layout_height=62.5pixes"
test:id=0pixes"

没有带数字的后变成打印0.




   

论坛徽章:
0
7 [报告]
发表于 2012-08-06 11:00 |只看该作者
非常感谢上面两位朋友的回答,由于我工作中用到awk的机会非常少,所以我也没有花心思去学习,也许是太懒了

论坛徽章:
0
8 [报告]
发表于 2012-08-06 11:20 |只看该作者
本帖最后由 noshape 于 2012-08-06 12:17 编辑

回复 3# winway1988

awk版本的问题,我换成gawk,可以了。之前的是mawk.
但是还有个问题,
winway1988的脚本会把文件里出现的数字都会运算,能不能只是后面有pixes的才进行运算?
再次感谢
   

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
9 [报告]
发表于 2012-08-06 13:49 |只看该作者
回复 8# noshape
没做任何思考,lz 试试:
awk -vRS='[0-9]+' '/pixes/{printf("%s%d", $0, int(RT * 2.5) + 1)}' urfile

论坛徽章:
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
10 [报告]
发表于 2012-08-06 14:28 |只看该作者
回复 8# noshape

How about this

$ echo 'test:layout_width="191pixes"  
test:layout_height="25pixes"
test:id="@+id/albumalbum"' | perl -lape '{s/(\d+)(pixes)/$1*2.5 .$2/e}'
test:layout_width="477.5pixes"  
test:layout_height="62.5pixes"
test:id="@+id/albumalbum"
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP