Here is what i'm trying to do :
I want to replace any occurence of the string "abc=123" by "abc=999" except if the pattern is followed by a digit (I want to replace only "abc=123" and not "abc=1234")
sed -E 's/$/./; s/abc=123([^0-9])/abc=999\1/g; s/.$//;'
At least with your small example.
If you are using AT&T's AST sed, or a BSD flavour of sed the -E option will be different.
---------- Post updated at 11:53 ---------- Previous update was at 11:49 ----------
@CarloM -- my thought exactly, but it still wasn't treating the newline as [^0-9], so I added the dot to ensure abc=123$ had some character after it. Maybe I was doing something wrong, but I couldn't get it to work just with the back reference.