bash: append string to end of line
i'm writing a patch script which including to append 'reboot=b' to grub kernel parameter to my linux box (many of them)
here's what i wrote; Code:
#!/bin/bash the original: kernel /kernel-2.6.19-gentoo-r5 root=/dev/hda3 video=vesafb:ywrap,mtrr,800x600-16@60 splash=silent,fadein,theme:walpurgisnacht quiet CONSOLE=/dev/tty1 will become: the original: kernel /kernel-2.6.19-gentoo-r5 root=/dev/hda3 video=vesafb:ywrap,mtrr,800x600-16@60 splash=silent,fadein,theme:walpurgisnacht quiet CONSOLE=/dev/tty1 reboot=b however the substitute sed command (sed "s/$kernel/$kernelappended" /boot/grub/menu.lst) failed.. please help me.. tq |
Substitute the strings manually in the sed command, and you will see what's happening:
Code:
sed "s/kernel /kernel-2.6.19-gentoo-r5 root=/dev/hda3 video=vesafb:ywrap,mtrr,800x600-16@60... |
Code:
sed "s/$kernel/$kernelappended" /boot/grub/menu.lst Code:
export xkernel=$kernel yeah, true for what macemoneta says. |
Less horrible: :D
Code:
sed -e "s/"$kernel"/"$kernelappended"/" /boot/grub/menu.lst |
So to integrate previous comments, you would have to replace / by \/ before doing the sed
Code:
kernel=${kernel//\//\\/} Code:
sed -e "s/"${kernel//\//\\/}"/"${kernelappended//\//\\/}"/" /boot/grub/menu.lst |
Quote:
Code:
sed "s:/foo:/bar:" # readable Code:
sed "s^$kernel^$kernelappended^" /boot/grub/menu.lst |
thx to all, i didn't know that i can replace any character as delimiter for sed.. kewl!
|
All times are GMT -5. The time now is 08:40 PM. |