我有一个包含以下格式数据的平面文件
(1+01:01)
(06:18)
(00:02)
如果它是秒的形式,我可以使用 awk 来总结数据
16
32
64
cat file | awk '{SUM+=$1} END {print SUM}'
有没有办法可以将存储在平面文件中的值转换为秒?
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 正在执行的命令。
为什么不awk
也用于这个呢?查看这个 stackoverflow 答案:Simple way to convert HH:MM:SS (hours:minutes:seconds.split seconds) to seconds