echo john_*_has_*_s | sed 's/*/10101/' | sed 's/*/789/'
if it is dynamically..?
I appreciate it has a question mark but normally questions start with words like how, what and why. I'm not at all sure what you're trying to do or why you're doing it in the first place. Would it be better to try and explain why you want to do this?
Can you check you're using double quotes everywhere - single quotes won't translate the variable values ie make sure you type " and not ' or '' (which is actually two single quotes typed one after the other).
Another point is that it would be easier to read if you had FILE_NAME=$V_NAME rather than printing out V_NAME and capturing the output. Even better might be to just use one variable rather than two holding the same value.
Also where did the * come from in FILE_NAME - I can't see how that could of been set using your code.