Do you know the difference of * in regular expressions (as used by e.g. sed ) and shell "pathname expansion / pattern matching" ?
Are you sure there's NO other character on that line, e.g. leading white space?
Why do you specify the g flag for global / overall substitution when you try to match the entire line?
True for expansion, false for regexes. . is the wild card in regexes (c.f. man regex ).
/^HOST.../ will match the "HOST" word at the begin of the line - so will NEVER match your sample.
sed commands / scripts operate on lines, and line per line on entire files (unless told otherwise). The g flag repeats the operation for every occurrence of the regex on the respective line.
Try
sed -i 's/HOST=[^)]*com/HOST=db.one.in/' repository.xml