Line Replacement help needed.

I have a file called vm.cfg which looks like follows

[root@OVM-SERVER1 vm_temp]# cat vm.cfg
acpi = 1
apic = 1
builder = 'hvm'
device_model = '/usr/lib/xen/bin/qemu-dm'
disk = ['file:/var/ovs/mount/93B14928C7A6438284753B2F2AB197BB/seed_pool/vm_temp/System.img,hda,w',
'file:/OVS/iso_pool/winxpsp2/WXPVOL_EN.iso,hdc:cdrom,r',
]
kernel = '/usr/lib/xen/boot/hvmloader'
memory = '300'
name = 'vm_temp'
on_crash = 'restart'
on_reboot = 'restart'
pae = 1
serial = 'pty'
timer_mode = '0'
usbdevice = 'tablet'
uuid = '8569c556-fdf9-41f7-93f4-52350560b13c'
vcpus = 1
vif = ['bridge=xenbr0,mac=00:16:3E:64:FB:D3,type=ioemu']
vif_other_config = []
vnc = 1
vncconsole = 1
vnclisten = '0.0.0.0'
vncpasswd = 'oracle'
vncunused = 1

I want to replace a line starting with name = to whatever value i need to assign .For ex.in above file name is assigned 'vm_temp' .I want to create a script which will ask user for a value for name and then assign the same.

I have used following sed command but there is little bug in it .
Please help me to modify it.

[root@OVM-SERVER1 vm_temp]# sed "s/^name/name = newvalue/g" vm.cfg

Above code produces following output.

[root@OVM-SERVER1 vm_temp]# sed "s/^name/name = newvalue/g" vm.cfg
acpi = 1
apic = 1
builder = 'hvm'
device_model = '/usr/lib/xen/bin/qemu-dm'
disk = ['file:/var/ovs/mount/93B14928C7A6438284753B2F2AB197BB/seed_pool/vm_temp/System.img,hda,w',
'file:/OVS/iso_pool/winxpsp2/WXPVOL_EN.iso,hdc:cdrom,r',
]
kernel = '/usr/lib/xen/boot/hvmloader'
memory = '300'
name = newvalue = 'vm_temp'
on_crash = 'restart'
on_reboot = 'restart'
pae = 1
serial = 'pty'
timer_mode = '0'
usbdevice = 'tablet'
uuid = '8569c556-fdf9-41f7-93f4-52350560b13c'
vcpus = 1
vif = ['bridge=xenbr0,mac=00:16:3E:64:FB:D3,type=ioemu']
vif_other_config = []
vnc = 1
vncconsole = 1
vnclisten = '0.0.0.0'
vncpasswd = 'oracle'
vncunused = 1

please help.

Do you want this?

[root@OVM-SERVER1 vm_temp]# sed "s/^name.*/name = newvalue/g" vm.cfg

How would i substitute new value for disk = ['file:/var/ovs/mount/93B14928C7A6438284753B2F2AB197BB/seed_pool/vm_temp/System.img,hda,w',
'file:/OVS/iso_pool/winxpsp2/WXPVOL_EN.iso,hdc:cdrom,r',
]
I want to change the first parameter i.e
file:/var/ovs/mount/93B14928C7A6438284753B2F2AB197BB/seed_pool/vm_temp/System.img
to
some other value.

Hi.

If that line is all in the same line .......

newfile="fjsdkfjsl"
sed "s|'file:.*,|'file:$newfile,|"

---------- Post updated at 12:55 PM ---------- Previous update was at 12:33 PM ----------

Hi.

If that line is all in the same line .......

newfile="fjsdkfjsl"
sed "s|'file:.*,|'file:$newfile,|"
echo "Pls input the name"
read name
val=`nawk -F" = " -v name="$name" '$1==name {print $2}' yourfile`
if [ $val = "" ];then
        echo "no such configuration item"
else
        echo $val | sed "s/'//g"
fi

Hi,

Try this ,

===============================
str=`grep name cfg.txt|awk '{print $3}'`
echo "enter the value for "
read repstr
sed "s/$str/\'$repstr\'/" cfg.txt >temp