免费注册 查看新帖 |

Chinaunix

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

[文本处理] 请教一下关于负数的正则匹配 [复制链接]

论坛徽章:
8
双鱼座
日期:2014-07-30 09:28:14辰龙
日期:2014-08-22 14:14:43水瓶座
日期:2014-12-02 15:36:392015年亚洲杯之朝鲜
日期:2015-02-06 09:28:592015亚冠之全北现代
日期:2015-09-10 14:40:18青铜圣斗士
日期:2015-11-18 09:22:56黄金圣斗士
日期:2015-11-26 09:17:2615-16赛季CBA联赛之新疆
日期:2016-08-15 17:00:22
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-11-13 10:33 |只看该作者 |倒序浏览
原来发在python版,看来是发错版面了

http://bbs.chinaunix.net/thread-4191889-1-1.html


我有很多列和行的数据
  1. 12               12  a90-4     11.2    52.252  -9999.900   -999.999  -9999.9   
  2. 13               13  a90-4     11.3   -52.562  -1999        -999.999  -9999.9   
  3. 14               14  a90-5     11.4    52.895  -1999        -999.999  -9999.9   
  4. 15               15  b90-6    -11.5    52.903  -9900.900  -999.999  -9999.9   
  5. 16               16  b90-9    -11.6    53.489  -1999.900  -999.999  -9999.9   
  6. 17               17  x90-2     11.7    53.512  -9900.900  -999.999  -9999.9   
  7. 18               18  x90-1     11.8   -53.072  -1999.900  -999.999  -9999.9
复制代码
列与列之间是用空格分隔的,里边有正数也有负数,还有带横线的字符串,我想把小于-100的数据替换成-999.999


请问这个正则表达式应该怎么写?

我匹配了几天总是不成功
  1. '-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)','-999.999'
复制代码

论坛徽章:
12
IT运维版块每日发帖之星
日期:2015-11-17 06:20:00程序设计版块每日发帖之星
日期:2016-01-19 06:20:0015-16赛季CBA联赛之江苏
日期:2016-01-17 15:31:3915-16赛季CBA联赛之上海
日期:2016-01-16 15:44:3015-16赛季CBA联赛之浙江
日期:2016-01-15 20:38:1815-16赛季CBA联赛之北京
日期:2016-01-09 14:30:15CU十四周年纪念徽章
日期:2016-01-07 12:31:5115-16赛季CBA联赛之四川
日期:2016-01-01 11:49:1515-16赛季CBA联赛之深圳
日期:2015-12-24 14:23:4115-16赛季CBA联赛之山西
日期:2015-12-15 16:22:31技术图书徽章
日期:2015-12-10 17:41:0015-16赛季CBA联赛之北控
日期:2016-02-03 10:03:24
2 [报告]
发表于 2015-11-13 10:43 |只看该作者
是这个意思么?
awk '{for(i=1;i<=NF;i++){if($i<-100)$i=-999.999}}1' 1
12 12 a90-4 11.2 52.252 -999.999 -999.999 -999.999
13 13 a90-4 11.3 -52.562 -999.999 -999.999 -999.999
14 14 a90-5 11.4 52.895 -999.999 -999.999 -999.999
15 15 b90-6 -11.5 52.903 -999.999 -999.999 -999.999
16 16 b90-9 -11.6 53.489 -999.999 -999.999 -999.999
17 17 x90-2 11.7 53.512 -999.999 -999.999 -999.999
18 18 x90-1 11.8 -53.072 -999.999 -999.999 -999.999

评分

参与人数 1信誉积分 +10 收起 理由
20032007 + 10 谢谢

查看全部评分

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
3 [报告]
发表于 2015-11-13 10:43 |只看该作者
本帖最后由 haooooaaa 于 2015-11-13 10:45 编辑

错了......

论坛徽章:
12
IT运维版块每日发帖之星
日期:2015-11-17 06:20:00程序设计版块每日发帖之星
日期:2016-01-19 06:20:0015-16赛季CBA联赛之江苏
日期:2016-01-17 15:31:3915-16赛季CBA联赛之上海
日期:2016-01-16 15:44:3015-16赛季CBA联赛之浙江
日期:2016-01-15 20:38:1815-16赛季CBA联赛之北京
日期:2016-01-09 14:30:15CU十四周年纪念徽章
日期:2016-01-07 12:31:5115-16赛季CBA联赛之四川
日期:2016-01-01 11:49:1515-16赛季CBA联赛之深圳
日期:2015-12-24 14:23:4115-16赛季CBA联赛之山西
日期:2015-12-15 16:22:31技术图书徽章
日期:2015-12-10 17:41:0015-16赛季CBA联赛之北控
日期:2016-02-03 10:03:24
4 [报告]
发表于 2015-11-13 10:59 |只看该作者
sed  -r  's/ \-[1-9][0-9]{2,}[^ ]*/ -999.999/g' 1 |column -t
12  12  a90-4  11.2   52.252   -999.999  -999.999  -999.999
13  13  a90-4  11.3   -52.562  -999.999  -999.999  -999.999
14  14  a90-5  11.4   52.895   -999.999  -999.999  -999.999
15  15  b90-6  -11.5  52.903   -999.999  -999.999  -999.999
16  16  b90-9  -11.6  53.489   -999.999  -999.999  -999.999
17  17  x90-2  11.7   53.512   -999.999  -999.999  -999.999
18  18  x90-1  11.8   -53.072  -999.999  -999.999  -999.999

评分

参与人数 1信誉积分 +10 收起 理由
20032007 + 10 谢谢

查看全部评分

论坛徽章:
5
白羊座
日期:2014-10-28 11:23:27水瓶座
日期:2015-01-20 10:19:022015亚冠之柏斯波利斯
日期:2015-07-11 18:17:2015-16赛季CBA联赛之同曦
日期:2015-12-23 12:38:582016猴年福章徽章
日期:2016-02-18 15:30:34
5 [报告]
发表于 2015-11-13 13:38 |只看该作者
  1. $ awk '{for(;i++<NF;)if(+$i < -100)$i=-999.999;i=0}1' 1.txt
  2. 12 12 a90-4 11.2 52.252 -999.999 -999.999 -999.999
  3. 13 13 a90-4 11.3 -52.562 -999.999 -999.999 -999.999
  4. 14 14 a90-5 11.4 52.895 -999.999 -999.999 -999.999
  5. 15 15 b90-6 -11.5 52.903 -999.999 -999.999 -999.999
  6. 16 16 b90-9 -11.6 53.489 -999.999 -999.999 -999.999
  7. 17 17 x90-2 11.7 53.512 -999.999 -999.999 -999.999
  8. 18 18 x90-1 11.8 -53.072 -999.999 -999.999 -999.999
复制代码

评分

参与人数 1信誉积分 +10 收起 理由
20032007 + 10 谢谢

查看全部评分

论坛徽章:
8
双鱼座
日期:2014-07-30 09:28:14辰龙
日期:2014-08-22 14:14:43水瓶座
日期:2014-12-02 15:36:392015年亚洲杯之朝鲜
日期:2015-02-06 09:28:592015亚冠之全北现代
日期:2015-09-10 14:40:18青铜圣斗士
日期:2015-11-18 09:22:56黄金圣斗士
日期:2015-11-26 09:17:2615-16赛季CBA联赛之新疆
日期:2016-08-15 17:00:22
6 [报告]
发表于 2015-11-13 15:20 |只看该作者
klainogn 发表于 2015-11-13 13:38

sync_1521 发表于 2015-11-13 10:59
sed  -r  's/ \-[1-9][0-9]{2,}[^ ]*/ -999.999/g' 1 |column -t
12  12  a90-4  11.2   52.252   -999.99 ...

sync_1521 发表于 2015-11-13 10:43
是这个意思么?
awk '{for(i=1;i


谢谢三位大侠。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP