#!/bin/bash
regex='^(_[^_]*_)[^_]*(_.*\.txt)$'
myvar='bar'
result=$(sed -E "s/$regex/\1$myvar\2/")
echo $result # echo _12345_bar_678.txt
IyEvYmluL2Jhc2gKcmVnZXg9J14oX1teX10qXylbXl9dKihfLipcLnR4dCkkJwpteXZhcj0nYmFyJwpyZXN1bHQ9JChzZWQgLUUgInMvJHJlZ2V4L1wxJG15dmFyXDIvIikKCmVjaG8gJHJlc3VsdCAjIGVjaG8gXzEyMzQ1X2Jhcl82NzgudHh0