유닉스에서 이 문자열 01:02:99의 숫자를 증가시키는 가장 쉬운 방법은 무엇입니까?

유닉스에서 이 문자열 01:02:99의 숫자를 증가시키는 가장 쉬운 방법은 무엇입니까?

이 문자열의 숫자를 증가시키는 가장 쉬운 방법은 무엇입니까 01:02:99?

예상 출력:01:03:00

답변을 드리고 싶지만 sed쉽지는 않을 것 같습니다.

답변1

당신이 사용할 수있는 awk.

$ echo 01:02:99 | awk -vINC_BY=1 -F: '{
    $3 += INC_BY; 
    $2 += int( $3 / 100 );
    $1 += int( $2 / 100 );
    printf("%02d:%02d:%02d\n", $1, $2 % 100, $3 % 100);
}'
01:03:00

이는 사용자가 하나를 추가한다고 가정합니다. "INC_BY"를 숫자를 늘리려는 값으로 변경합니다.

사용된 sed것은이건 좋은 생각이 아니야.

답변2

이것은 bash에서 할 수 있습니다 ...

먼저 이를 제거하고 :정수로 처리한 다음 1을 더합니다. 앞에 0이 있기 때문에 10진수를 강제해야 합니다. 구문은 다음과 유사합니다.

let x=10#$(echo $x | tr -d :)+1

printf그런 다음 몇 가지 bash산술을 사용하여 다시 합칠 수 있습니다 :.

printf %02d:%02d:%02d $((x/10000%100)) $((x/100%100)) $((x%100))

우리는 그것을 하나로 묶을 수 있습니다: 예:

$ x=01:02:99
$ let x=10#$(echo $x | tr -d :)+1
$ x=$(printf %02d:%02d:%02d $((x/10000%100)) $((x/100%100)) $((x%100)))
$ echo $x
01:03:00

관련 정보