이 문자열의 숫자를 증가시키는 가장 쉬운 방법은 무엇입니까 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