SED RECUSIVE REPLACE
grep -rl oldtext . | xargs sed -i 's/oldtext/newtext/g'
Bad Bat
grep -rl oldtext . | xargs sed -i 's/oldtext/newtext/g'
For using match in sed replacement, just border it with '\(' and '\)':
echo Before123 | sed 's/Before\([0-9]*\)/\1After/g'
123After # number is matched withtin '\( \)' and replaced in '\1'
Example with 2 match replacements
echo a_b | sed 's/\(^.*\)_\(.*$\)/first is \1 and \2 is after/g'