免费注册 查看新帖 |

Chinaunix

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

[文本处理] sed对数据从右到左隔三位来一个, [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-01-15 11:12 |只看该作者 |正序浏览
echo 12345678.12|sed ****

期望达到效果:

12,345,678.12

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
16 [报告]
发表于 2016-01-17 15:22 |只看该作者
本帖最后由 关阴月飞 于 2016-01-17 15:26 编辑

回复 1# o06v90o
千分位格式:
%'d
  1. printf "%'.2f\n"  12345678.12
复制代码
  1. awk -F. '{printf "%\047d.%d\n",$1,$2}' <<<12345678.12
复制代码

论坛徽章:
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
15 [报告]
发表于 2016-01-15 20:23 |只看该作者
回复 14# songyc_2015


    一下发四个,你就是这么水帖的么

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
14 [报告]
发表于 2016-01-15 18:33 来自手机 |只看该作者
sed -r ':a;s/^([0-9]+)([0-9]{3})/\1,\2/;ta',目测可以,没环境测试……

评分

参与人数 1信誉积分 +6 收起 理由
sync_1521 + 6 6

查看全部评分

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
13 [报告]
发表于 2016-01-15 18:33 来自手机 |只看该作者
sed -r ':a;s/^([0-9]+)([0-9]{3})/\1,\2/;ta',目测可以,没环境测试……

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
12 [报告]
发表于 2016-01-15 18:33 来自手机 |只看该作者
sed -r ':a;s/^([0-9]+)([0-9]{3})/\1,\2/;ta',目测可以,没环境测试……

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
11 [报告]
发表于 2016-01-15 18:29 来自手机 |只看该作者
sed -r ':a;s/^([0-9]+)([0-9]{3})/\1,\2/;ta',目测可以,没环境测试……

论坛徽章:
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
10 [报告]
发表于 2016-01-15 17:25 |只看该作者
回复 4# songyc_2015

小数点后超过3位就处理不了了
echo 12345678.12345|sed -r ':a;s/([0-9]+)([0-9]{3}[,.]?)/\1,\2/;ta'
12,345,678.12,345
echo 12345678.12345|sed -r ':a;s/([0-9]+)([0-9]{3})/\1,\2/;ta'
12,345,678.12,345

这种可以处理小数点后超过3位的情况,但是不能处理整数
echo 12345678.12345|sed -r ':a;s/([0-9]+)([0-9]{3}[,.])/\1,\2/;ta'
12,345,678.12345
echo 12345678|sed -r ':a;s/([0-9]+)([0-9]{3}[,.])/\1,\2/;ta'
12345678

有个完美sed版的么?

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-10-11 06:20:0015-16赛季CBA联赛之山东
日期:2016-05-28 18:18:5615-16赛季CBA联赛之新疆
日期:2017-04-12 22:55:4715-16赛季CBA联赛之青岛
日期:2017-06-26 18:30:0315-16赛季CBA联赛之四川
日期:2017-09-04 12:27:0315-16赛季CBA联赛之福建
日期:2018-02-09 14:28:3315-16赛季CBA联赛之同曦
日期:2018-04-17 12:43:3415-16赛季CBA联赛之浙江
日期:2018-07-14 13:27:4015-16赛季CBA联赛之吉林
日期:2018-09-13 15:48:2915-16赛季CBA联赛之新疆
日期:2016-05-07 05:05:3215-16赛季CBA联赛之八一
日期:2016-03-14 12:32:06程序设计版块每日发帖之星
日期:2015-12-12 06:20:00
9 [报告]
发表于 2016-01-15 16:39 |只看该作者
本帖最后由 baby_神 于 2016-01-15 16:41 编辑
  1. [root@local ~]# echo 1234567.22 | sed -r ':a;s/([0-9]+)([0-9]{3}[.])/\1,\2/;ta'
  2. 1234,567.22
  3. [root@local ~]# echo 1234567.22 | sed -r ':a;s/([0-9]+)([0-9]{3}[.]?)/\1,\2/;ta'
  4. 1,234,567.22
复制代码
不用加,加个?就可以了

回复 8# 陈卓文


   

论坛徽章:
1
技术图书徽章
日期:2016-02-03 16:35:25
8 [报告]
发表于 2016-01-15 16:36 |只看该作者
linux:~ # echo 1234567.22 | sed -r ':a;s/([0-9]+)([0-9]{3}[.,])/\1,\2/;ta'
1,234,567.22
linux:~ # echo 1234567.22 | sed -r ':a;s/([0-9]+)([0-9]{3}[.])/\1,\2/;ta'
1234,567.22

逗号用于循环时再匹配啊已处理\1,\2的逗号啊
回复 5# baby_神


   
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP