0

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

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

如果它是秒的形式,我可以使用 awk 来总结数据

16
32
64

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

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

4

2 回答 2

2

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

这是您可以使用 GNU grep、sed 和日期解析文件的一种方法:

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

输出:

7260
22680
120

离开e标志以查看 sed 正在执行的命令。

于 2013-02-22T08:52:27.573 回答
1

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

于 2013-02-22T07:34:37.840 回答