是否有一个unix程序将各种HH:MM:SS格式转换为秒?

时间:2013-02-22 07:22:27

标签: linux unix awk

我有一个包含以下格式数据的平面文件

(1+01:01)
(06:18)
(00:02)

我可以使用awk来总结数据,如果它是像这样的数秒

16
32
64

cat file | awk '{SUM+=$1} END {print SUM}'

有没有办法可以将存储在平面文件中的值转换为秒?

2 个答案:

答案 0 :(得分:2)

GNU日期非常适合解析日期,但不支持1+01:01。如果你让sed稍微修改输入,并假设它意味着1 hour + 1 hour + 1 minute,你仍然可以使用它。

以下是使用GNU grep,sed和date解析文件的一种方法:

<infile grep -o '[^()]*' | 
sed 's/^([0-9]+)[+-]/\1 hour /; 
     s/^/date -d "/; 
     s/$/ 1970-01-01 UTC" +%s/e'

输出:

7260
22680
120

保留e标志以查看sed正在执行的命令。

答案 1 :(得分:1)

为什么不使用awk呢?看看这个stackoverflow答案:Simple way to convert HH:MM:SS (hours:minutes:seconds.split seconds) to seconds