免费注册 查看新帖 |

Chinaunix

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

[文本处理] awk 可以完成差值计算吗 [复制链接]

论坛徽章:
6
程序设计版块每日发帖之星
日期:2015-12-05 06:20:00数据库技术版块每日发帖之星
日期:2016-02-06 06:20:00数据库技术版块每日发帖之星
日期:2016-03-07 06:20:00程序设计版块每日发帖之星
日期:2016-06-04 06:20:00黑曼巴
日期:2017-02-06 16:31:2615-16赛季CBA联赛之广夏
日期:2017-05-07 09:02:07
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-12-07 14:11 |只看该作者 |倒序浏览
又来请教给位前辈问题了,需要处理一批数据,数据的格式是用空格隔开的,用awk能实现后一个减前一个并将数值输出。
数据结构如下:
1 3 6 9 10 等等

计算结果就是后一个减去前一个的值
2 3 3 1

实际的数据内容如下:
59.3830 52.8860 35.7770 67.9150 89.7930 13.3350 57.3860 47.4920 108.6490 91.4210 91.3620 10.0270 15.6900 90.0590 119.7630 54.9260 59.5400 54.4260 17.1720 44.7360 37.2110 86.3680 68.5670 45.4290 86.7820 107.5300 60.8620 15.1230 87.0670 71.1350 51.9290 48.8020 2.0220 111.0580 19.0690 115.1670 2.3930 75.4560 65.0110 110.0420 69.2290 34.3730 22.4210 83.9190 26.7840 44.5370 41.1980 85.3240 1.3150 57.3700 32.4130 37.5260 46.0910 99.9800 81.9560 10.8730 109.8620 45.1700 24.9960 99.2810 115.3050 75.9250 26.0840 116.3270 89.3360 68.5050 12.8460 90.7290 46.3130 76.8570 103.1240 17.8950 13.5820 3.5450 100.8140 39.3670 71.4340 44.3640 27.0430 71.7500 4.0870 82.8080 108.2760 49.1780 60.7880 92.5840 83.4030 48.6510 15.7540 107.3990 25.9320 9.0600 85.6760 75.3680 27.7390 53.0120

现在这谢过各位啦~

论坛徽章:
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
2 [报告]
发表于 2016-12-07 14:16 |只看该作者
  1. awk '{s="";for(i=NF;i>1;i--)s=$i-$(i-1)" "s;print s}'
复制代码

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
3 [报告]
发表于 2016-12-07 14:23 |只看该作者

  1. echo '1 3 6 9 10'|awk '{for(i=1;i<NF;i++)printf (i==1?"":FS) $(i+1)-$i;print""}'
复制代码

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
4 [报告]
发表于 2016-12-07 14:25 |只看该作者
  1. awk '{for(i=2;i<=NF;i++)print $i-$(i-1)}' file
复制代码

论坛徽章:
6
程序设计版块每日发帖之星
日期:2015-12-05 06:20:00数据库技术版块每日发帖之星
日期:2016-02-06 06:20:00数据库技术版块每日发帖之星
日期:2016-03-07 06:20:00程序设计版块每日发帖之星
日期:2016-06-04 06:20:00黑曼巴
日期:2017-02-06 16:31:2615-16赛季CBA联赛之广夏
日期:2017-05-07 09:02:07
5 [报告]
发表于 2016-12-07 14:30 |只看该作者
回复 4# jcdiy0601

谢谢您的回复,您这个可以做差,但是得出的结果显示的不是原格式而是独自每一列,但仍然感谢。

论坛徽章:
6
程序设计版块每日发帖之星
日期:2015-12-05 06:20:00数据库技术版块每日发帖之星
日期:2016-02-06 06:20:00数据库技术版块每日发帖之星
日期:2016-03-07 06:20:00程序设计版块每日发帖之星
日期:2016-06-04 06:20:00黑曼巴
日期:2017-02-06 16:31:2615-16赛季CBA联赛之广夏
日期:2017-05-07 09:02:07
6 [报告]
发表于 2016-12-07 14:31 |只看该作者
回复 2# haooooaaa

谢谢前辈的指点,多谢

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
7 [报告]
发表于 2016-12-07 14:47 |只看该作者
  1. perl -aple '$_=join " ",reverse map{sprintf("%.2f",$F[$_]-$F[$_-1])}reverse 1..$#F' f
复制代码

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
8 [报告]
发表于 2016-12-07 15:17 |只看该作者
回复 5# 夏洛特猫

  1. awk '{for(i=2;i<=NF;i++)printf("%s ",$i-$(i-1));print ""}' file
复制代码

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
9 [报告]
发表于 2016-12-07 15:17 |只看该作者
回复 5# 夏洛特猫

  1. awk '{for(i=2;i<=NF;i++)printf("%s ",$i-$(i-1));print ""}' file
复制代码

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP