05:42:32와 같은 지속 시간을 초 단위의 지속 시간으로 쉽게 변환하는 방법을 원합니다. bash에서이 작업을 수행하는 쉽고 빠른 방법이 있습니까? "date"및 % s 등을 시도했지만 1970 년 이후로 항상 시간을 반환하며 기간 만 필요합니다.DURATION HH : MM : SS를 bash에서 초로 변환하십시오.
감사합니다.
05:42:32와 같은 지속 시간을 초 단위의 지속 시간으로 쉽게 변환하는 방법을 원합니다. bash에서이 작업을 수행하는 쉽고 빠른 방법이 있습니까? "date"및 % s 등을 시도했지만 1970 년 이후로 항상 시간을 반환하며 기간 만 필요합니다.DURATION HH : MM : SS를 bash에서 초로 변환하십시오.
감사합니다.
awk
은 bash로 계산됩니까?
$ echo "05:42:32" | awk -F':' '{print $1 * 60 * 60 + $2 * 60 + $3}'
20552
당신은 또한 시간없이 지속 시간을 분석해야하는 경우
:awk -F':' '{if (NF == 2) {print $1 * 60 + $2} else {print $1 * 60 * 60 + $2 * 60 + $3}}'
당신은 시간, 분, 초에 시간을 분할 IFS를 사용할 수 있습니다.
#! /bin/bash
to_seconds() {
IFS=: read h m s <<< "$1"
echo $((10#$h * 3600 + 10#$m * 60 + 10#$s))
}
duration=05:42:32
to_seconds $duration
'곱하기 '란 무엇입니까? –
@PavelAnossov : 오우, 감사합니다. 삭제되었습니다. 나는 원래 숫자를 1에서 60, 3600을 곱해서 실험했다. – choroba
또한 $ 1 대신 $ duration을 사용했다. –
파벨의 대답은 거의 표준 해결책입니다.
그냥 재미를 위해, 당신도이 방법 (sed + bc)
에 그것을 할 수 :
kent$ echo "05:42:32"|sed 's/:/*60+/g;s/*60/&&/'|bc
20552
예는 않습니다! 솔루션을 제공해 주셔서 감사합니다. – user2375106
또한 결과를 에코하는 대신 "duration"이라는 변수에서 어떻게 가져 오나요? 감사합니다. – user2375106
어떤 명령의 결과도'variable = $ (command)'를 가진 변수에 할당 할 수 있습니다. 그래서'duration = $ (wherever_you_get_your_time_from | awk ...)' –