With the `match()` function of GNU awk to store the matching group in an array, you could do

 awk -F: ' BEGIN { OFS = FS } match($1, /([0-9]+)$/ , arr ) { $2 = $2 "" arr[1] } 1' file

On any POSIX complaint `awk` you could do

 awk -v FS=: ' BEGIN { OFS = FS } match($1, /([0-9]+)$/ ) { $2 = $2 "" substr($0, RSTART, RLENGTH) } 1' file

See [How to permanently change a file using awk? ("in-place" edits, as with "sed -i")](https://unix.stackexchange.com/a/496187/112235) to make the file change persistent.