Search & Replacing text within a file

Hi all!
I'm a newbie and I'm writing a script which will ask a user for data to search. I will then search for this data using grep and displaying this data back to the screen for the user to see. The user will then enter new data to replace the data searched.

Now how do I replace this data within the file? SED, AWK???
grep search results for "JOE S SMITH":
#'s - Indicate spaces
730000146104218006JOE#S#SMITH#########5230 BRUNSWICK LN MACUNGIE

Replace with "TIM KIM":
730000146104218006TIM#KIM#############5230 BRUNSWICK LN MACUNGIE
or
Replace with "JEROMANIA K KALAMAZOO"
730000146104218006JEROMANIA#K#KALAMAZO5230 BRUNSWICK LN MACUNGIE

***** Data for Name starts at position 19 and ends at position 38 of this file. Replacement data CAN NOT go past position 38 ******

Is this homework?

seems like a script with the following basics

read input1
grep input1 < myfile
read input2
sed s/input1/input2 <myfile >mynewfile

Yes I am somewhat familiar with this command, but the data that I am replacing can't shift right or left. This file must stay as a fixed format to be read by other processes. So if i search for data in a file such as the name which starts at position 19 and ends at position 38 of this file. Replacement data CAN NOT go past position 38. example:

grep search results for "JOE S SMITH":
#'s - Indicate spaces
730000146104218006JOE#S#SMITH#########5230 BRUNSWICK LN MACUNGIE

Replace with "TIM KIM":
730000146104218006TIM#KIM#############5230 BRUNSWICK LN MACUNGIE
or
Replace with "JEROMANIA K KALAMAZOO"
730000146104218006JEROMANIA#K#KALAMAZO5230 BRUNSWICK LN MACUNGIE

search="JOE S SMITH"
replace1="TIM KIM"
replace2="JEROMANIA K KALAMAZOO"

awk -v s="$search" -v r="$replace1" 'function convert(str) {return (length(str)>20)?substr(str,1,20):sprintf("%-20s",str)}
        {if ($0~s) sub(convert(s),convert(r))}1' infile

730000146104218006TIM KIM             5230 BRUNSWICK LN MACUNGIE

awk -v s="$search" -v r="$replace2" 'function convert(str) {return (length(str)>20)?substr(str,1,20):sprintf("%-20s",str)}
        {if ($0~s) sub(convert(s),convert(r))}1' infile

730000146104218006JEROMANIA K KALAMAZO5230 BRUNSWICK LN MACUNGIE