LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 797|回复: 4

求助:如何处理文件中的时间

[复制链接]
发表于 2007-1-19 15:12:39 | 显示全部楼层 |阅读模式
有文件内容是
TTTTT111110000000
TTTTT111110000000
TTTTT111110000000
................................
这样的形式,其中0000000的部分是表示hhmmsst的时间格式(t是表示的毫秒),现在要求把每一行的时间相加,得到hhhmmsst的表示时间总和的格式,不知道怎么入手,求各位大虾帮忙,谢谢
发表于 2007-1-19 16:02:48 | 显示全部楼层
不知道你的t表示毫秒是什么意思,
假设是0.1秒。
awk 'BEGIN{FS="";time=0}
{h=($11$12*3600);m=($13$14*60);s=$15$16;ms=($17*0.1);
time+=h+m+s+ms;}
END{print time}' 文件
回复 支持 反对

使用道具 举报

发表于 2007-1-19 16:06:28 | 显示全部楼层
与你前一个问题一样
  1. #!/bin/bash
  2. sum=0
  3. for str in `sed -n -e $1`;do
  4.         value="10#${str:10}"
  5.         sum=$((sum+$value))
  6. done
  7. echo $sum
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-19 17:05:20 | 显示全部楼层
不好意思,是我没有表达清楚,那个文件是像这样
HHHHH 0003
TTTTT000030000033
HHHHH 0004
TTTTT000040000044
HHHHH 0005
TTTTT000050000055
要求是统计HHHHH开头的行的总数,并且累加以TTTTT开头的行中第6到第10的数据,最后就是我上面说的累加第11到第17的数据(是以hhmmsst表示的),然后把结果写在文件最后一行
我现在写的脚本是
#!/usr/bin/ksh
sum=0
while read LINE
do
echo "$LINE"
        FIRST=`echo "${LINE}"|cut -c1-5`
        if [ ${FIRST} = TTTTT ]
        then
                EXCH=`echo "${LINE}"|cut -c6-10`
                echo "$EXCH"
                sum=$((sum+$EXCH))
                fi
                if [ ${FIRST} = HHHHH ]
        then
                num=$((num+1))
        fi
done < $des
后面就不知道怎么写了,Lastart大虾那个awk我能看懂,但是不知道怎么加进我写的shell里面去,后面应该怎么写啊,求帮忙,谢谢
回复 支持 反对

使用道具 举报

发表于 2007-1-19 20:50:22 | 显示全部楼层
试试下面的代码

  1. #!/usr/bin/awk -f
  2. BEGIN{FS="";
  3. sumT=0;
  4. totalH=0;
  5. hT=0;
  6. mT=0;
  7. sT=0;
  8. msT=0;
  9. }
  10. /^HHHHH/{totalH++}
  11. /^TTTTT/{sumT+=$6$7$8$9$10;
  12. hT+=$11$12;
  13. mT+=$13$14;
  14. sT+=$15$16;
  15. msT+=$17;
  16. }
  17. END{a=int(msT/10);
  18. msT=msT-a*10;
  19. sT=sT+a;
  20. a=int(sT/60);
  21. sT=sT-a*60;
  22. mT=mT+a;
  23. a=int(mT/60);
  24. mT=mT-a*60;
  25. hT=hT+a;
  26. #print "totalH:"totalH" sumT:"sumT" time:"hT mT sT msT}
  27. printf("totalH:%d sumT:%05d time:%03d%02d%02d%1d\n",totalH,sumT,hT,mT,sT,msT)}
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表