免费注册 查看新帖 |

Chinaunix

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

awk屏蔽科学计数法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-17 11:48 |只看该作者 |倒序浏览
需求如下
[postgres@bdttestone ~]$ awk -F ,  '{printf "%.2f\n",$3}' test.txt
0.00
27428.92
26548.04
12232842.28
34208.00
41837.68
31393.04
54856.36
24460.56
20854.32
37862.32
0.00
0.00
现在需要统计列的和值

[postgres@bdttestone ~]$  awk -F ,  '{printf "%.2f\n",$3}' test.txt |awk '{a+=$1}END{print  a} '
1.25323e+07


请问如何屏蔽这个 科学计数法呢?

谢谢

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
2 [报告]
发表于 2009-07-17 11:53 |只看该作者
你自己的第一条命令不是已经给出了方法了么?

论坛徽章:
0
3 [报告]
发表于 2009-07-17 12:59 |只看该作者
多谢
我想统计 很多列的和值
2009-07-16 , 22290001 ,    27428.920000000000 ,       13 ,    653523.000000000000 ,    97778.000000000000 , 7822.2400000000000000 ,    11775.000000000000 ,   602771.160000000000
2009-07-16 , 22290002 ,    26548.040000000000 ,        4 ,  5635.0000000000000000 , 1916.0000000000000000 ,  153.2800000000000000 , 6220.0000000000000000 ,    36640.320000000000
2009-07-16 , 22290003 , 12232842.280000000000 ,        6 , -11495620.000000000000 ,  242.0000000000000000 ,   19.3600000000000000 , 2215.0000000000000000 ,   739214.640000000000
2009-07-16 , 22290004 ,    34208.000000000000 ,        4 ,     12880.000000000000 , 2188.0000000000000000 ,  175.0400000000000000 , 7210.0000000000000000 ,    52285.040000000000
2009-07-16 , 22290005 ,    41837.680000000000 ,        2 ,  1080.0000000000000000 ,  644.0000000000000000 ,   51.5200000000000000 , 4455.0000000000000000 ,    46780.200000000000
2009-07-16 , 22290006 ,    31393.040000000000 ,        3 ,  1202.0000000000000000 ,  798.0000000000000000 ,   63.8400000000000000 , 2025.0000000000000000 ,    33885.880000000000
2009-07-16 , 22290007 ,    54856.360000000000 ,        1 ,  4450.0000000000000000 ,  248.0000000000000000 ,   19.8400000000000000 ,  200.0000000000000000 ,    59278.200000000000
2009-07-16 , 22290008 ,    24460.560000000000 ,        4 ,  -268.0000000000000000 ,  688.0000000000000000 ,   55.0400000000000000 , 4080.0000000000000000 ,    27639.600000000000
2009-07-16 , 22290009 ,    20854.320000000000 ,        2 ,    58.0000000000000000 ,  164.0000000000000000 ,   13.1200000000000000 ,    13015.000000000000 ,    33776.440000000000
2009-07-16 , 22290010 ,    37862.320000000000 ,        7 ,    -49714.000000000000 , 1870.0000000000000000 ,  149.6000000000000000 ,    12600.000000000000 , -972.0800000000000000
(10 rows)

[postgres@bdttestone ~]$ awk -F , '{a+=$3;b+=$4;c+=$5;d+=$6;e+=$7;f+=$8;g+=$9}END{print a,b,c,d,e,f,g} ' 1.txt
1.25323e+07 46 -10866774 106536 8522.88 63795 1.6313e+06

但是我如果用printf呢

[postgres@bdttestone ~]$ awk -F , '{a+=$3;b+=$4;c+=$5;d+=$6;e+=$7;f+=$8;g+=$9}END{printf "%.2f\n" ,a,b,c,d,e,f,g} ' 1.txt
12532291.52
只能输出 第一个数  
还请大家 指点一下

论坛徽章:
0
4 [报告]
发表于 2009-07-17 13:04 |只看该作者

回复 #3 bugouhen 的帖子

应该{printf "%.2f %.2f %.2f %.2f %.2f %.2f %.2f\n" ,a,b,c,d,e,f,g\n" ,a,b,c,d,e,f,g}
就可以了

论坛徽章:
0
5 [报告]
发表于 2009-07-17 13:12 |只看该作者
$ awk -F , '{a+=$3;b+=$4;c+=$5;d+=$6;e+=$7;f+=$8;g+=$9}END{printf "%.2f %.2f %.2f %.2f %.2f %.2f %.2f\n" ,a,b,c,d,e,f,g}' 1.txt
12532291.52 46.00 -10866774.00 106536.00 8522.88 63795.00 1631299.40

这样就可以了
谢谢楼上的几位!

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
6 [报告]
发表于 2009-07-17 13:16 |只看该作者

回复 #1 bugouhen 的帖子

man awk

OFMT        The output format for numbers, "%.6g", by default.

  1. $ echo '12232842.28' | awk '{s+=$1;print s}'
  2. 1.22328e+07
  3. $ echo '12232842.28' | awk 'BEGIN{OFMT="%.2f"}{s+=$1;print s}'
  4. 12232842.28
复制代码

论坛徽章:
0
7 [报告]
发表于 2009-07-17 13:29 |只看该作者
如果要是想把 得出的列和值 追加到列的最后呢

有什么方法么 ?

论坛徽章:
0
8 [报告]
发表于 2009-07-17 14:31 |只看该作者

回复 #7 bugouhen 的帖子

在END前加一个{print $0}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP