在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

这假设您想要加一。将“INC_BY”更改为您想要增加数字的值。

使用的sed这不是一个好主意

答案2

这可以在 bash 中完成...

首先去掉 ,:将其视为整数,然后加 1。由于前导零,我们需要强制以 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

相关内容