增加该字符串中的数字的最简单方法是什么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