Unix 将时间格式转换为整数值

Unix converting time format to integer value

我有以下文本文件。

Account1,2h 01m 00s
Account2,4h 25m 23s
Account3,5h 43m 59s

我希望将小时、分钟和秒的值相加,以便将它们加总到各自的分钟总数中。

Account1 minute total = 121
Account2 minute total = 265
Account3 minute total = 343

我有以下 bash 文件

cat data.txt | cut -f2 -d',' 

这会隔离时间值;但是,从这里我不知道我将采取什么步骤来隔离时间,将其转换为整数,然后将其转换为分钟。我试过使用 PARAM 但无济于事。

如果awk是一个选项,你可以试试这个

awk -F"[, ]" '{h=60; m=1; s=0.01666667}{split(,a,/h/); split(,b,/m/); split(,c,/s/); print, "minute total = " int(a[1] * h + b[1] * m + c[1] * s)}' input_file
$ cat awk.script

BEGIN {
  FS=",| "
} {
  h=60
  m=1
  s=0.01666667
}{
  split(,a,/h/)
  split(,b,/m/)
  split(,c,/s/)
  print , "minute total = " int(a[1] * h + b[1] * m + c[1] * s)
}

输出

awk -f awk.script input_file
Account1 minute total = 121
Account2 minute total = 265
Account3 minute total = 343