免费注册 查看新帖 |

Chinaunix

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

如何将秒换算成天小时分钟秒? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-13 22:52 |只看该作者 |倒序浏览
入某一文本如下:
  1. 11  60   aa
  2. 12  792  bb
  3. 47  4867 cc
复制代码
能否将第二列换算成xx天xx小时xx分钟xx秒
也就是这样的结果
  1. 11  1分钟            aa
  2. 12  13分钟12秒       bb
  3. 47  1小时21分7秒     cc
复制代码
用shell如何实现?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2011-09-13 23:56 |只看该作者

  1. $ cat a
  2. 11  60   aa
  3. 12  792  bb
  4. 47  4867 cc
  5. 33  90000 dd
  6. 77  1234241 ee


  7. $ awk '$2<60{$2=$2"sec";print $0;next}$2>=60&&$2<3600{$2=int($2/60)"min"$2%60"s
  8. ec";print $0;next}$2>=3600&&$2<86400{$2=int($2/3600)"hour"int($2%3600/60)"min"$
  9. 2%60"sec";print $0;next}$2>86400{$2=int($2/86400)"day"int($2%86400/3600)"hour"i
  10. nt($2%3600/60)"min"$2%60"sec";print $0}' a
  11. 11 1min0sec aa
  12. 12 13min12sec bb
  13. 47 1hour21min7sec cc
  14. 33 1day1hour0min0sec dd
  15. 77 14day6hour50min41sec ee
复制代码

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
3 [报告]
发表于 2011-09-14 08:00 |只看该作者

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
4 [报告]
发表于 2011-09-14 09:20 |只看该作者
回复 1# moshangxie


    写个自定义function
awk '
function s2t(second){ day=int(second/86400);
hour=(second - 86400*day)/1440;
#以此类推。。。
return "day天hour小时....."}
{$2=s2t($2);print}' yourfile
即可
那函数里面你自己算吧。小学数学而已

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
5 [报告]
发表于 2011-09-14 09:59 |只看该作者
入某一文本如下:能否将第二列换算成xx天xx小时xx分钟xx秒
也就是这样的结果用shell如何实现?
moshangxie 发表于 2011-09-13 22:52



$ echo '11  60   aa
12  792  bb
47  4867 cc
55 12345678 dd' | awk 'BEGIN{a[3]="天";a[2]="小时";a[1]="分钟";a[0]="秒";b[0]=60;b[1]=60;b[2]=24;b[3]=9999}{printf $1"\t";t="";for(n=0;n<=3;n++){if($2>=b[n]){t=$2%b[n]a[n]t;$2=int($2/b[n])}else{t=$2a[n]t;n=4}}print t"\t"$3}'
11        1分钟0秒        aa
12        13分钟12秒        bb
47        1小时21分钟7秒        cc
55        142天21小时21分钟18秒        dd

论坛徽章:
0
6 [报告]
发表于 2011-09-14 10:06 |只看该作者
为什么我总觉得这个玩意儿应该有现成的工具才对
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP