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
我有以下文本文件。
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