Unixでこの文字列01:02:99の数を増やす最も簡単な方法は何ですか?

Unixでこの文字列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

これは、ユーザーが1つを追加すると仮定します。 「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))

私たちはそれを1つにまとめることができます:例:

$ 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

関連情報