免费注册 查看新帖 |

Chinaunix

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

问个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-16 10:25 |只看该作者 |倒序浏览
我有两个时间,格式是 hh:min:sec, 如
10:25:10      和10:30:20

我想计算出它两的间隔,怎么用awk来做。
其中这两个时间都是保持在两个变量里。

论坛徽章:
0
2 [报告]
发表于 2004-04-16 11:00 |只看该作者

问个问题

文件:
  1. # cat timefile
  2. 10:25:10
  3. 10:30:20
复制代码

命令:
  1. awk -F: '{a[NR]=$1*3600+$2*60+$3}END{if(a[2]<a[1])t=a[1]-a[2];else t=a[2]-a[1];s=t%60;m=(t-s)/60%60;h=(t-m*60-s)/3600;printf("%02d:%02d:%02d\n",h,m,s)}' timefile
复制代码

结果:
  1. 00:05:10
复制代码

方法土点,测试不够,可能还不对,嘿嘿。 :em11:
等高手吧

论坛徽章:
0
3 [报告]
发表于 2004-04-16 13:15 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2004-04-16 14:58 |只看该作者

问个问题

原帖由 "nkoldbug" 发表:
foreach i (1 2 3)


这样行吗

$a $b是原先的两个时间变量


分字段相减恐怕不行, 如10: 25: 20 与10: 30: 10可能是00: 05:-10
正确结果应该是 00: 04: 50

这个也比较长
a="10: 25: 20"
b="10: 30: 10"
  1. echo $b"\n"$a|awk -F: '{print $1*3600+$2*60+$3}'|xargs|sed 's/ /-/'|bc|awk '{printf "%02d: %02d: %02d\n",$0/3600,$0%3600/60,$0%3600%60}'
复制代码

结果:
00: 04: 50

论坛徽章:
0
5 [报告]
发表于 2004-04-16 15:23 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2004-04-16 16:17 |只看该作者

问个问题

原帖由 "nkoldbug" 发表:
谢谢指正
考虑的太不周到了
hoho


呵呵~你们的思路很快啊!我就有机会借鉴啦~ :wink:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP