rpm会自动将新安装的内核作为第一个选项。但是,我想把它作为最后一个 - 移到文件的末尾。
Grub配置文件如下所示:
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.29.6-217.2.7.fc11.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.29.6-217.2.7.fc11.x86_64 ro root=/dev/mapper/main-root rhgb quiet
initrd /initrd-2.6.29.6-217.2.7.fc11.x86_64.img
title Fedora (2.6.29.6-217.2.3.fc11.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.29.6-217.2.3.fc11.x86_64 ro root=/dev/mapper/main-root rhgb quiet
initrd /initrd-2.6.29.6-217.2.3.fc11.x86_64.img
title Fedora (2.6.29.6-213.fc11.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.29.6-213.fc11.x86_64 ro root=/dev/mapper/main-root rhgb quiet
initrd /initrd-2.6.29.6-213.fc11.x86_64.img
我的目标是将第一个选项(217.2.3)移至结束。现在我想出如何删除它:
sed -e '/(2.6.29.6-217.2.7.fc11.x86_64)/,+3d' /boot/grub/menu.lst
p命令只打印当前行(而不是在vim中,这意味着粘贴)。
您是否有任何想法如何自动将此部分文件移至最后?
答案 0 :(得分:3)
我必须自己回答。 : - )
sed '/\(2.6.18-157.el5\)/,+4 { H; d; }; $ { p; x; }' /boot/grub/menu.lst
如果你不熟悉sed(我也不熟悉),那么有更详细的版本
sed '
/\(2.6.18-157.el5\)/,+3 { #Find line which contains version of our kernel in parentheses and took also 3 following lines
H # Append this line into buffer
d # Delete line
}
$ { # On the last line
p # Print current line
x # Change current line with buffer and vice versa
# Afterwards sed print current line => in our case deleted line
}' /boot/grub/menu.lst
答案 1 :(得分:0)
一项非常类似的任务被广泛涵盖here
是的,精心设计的sed命令有一些满足感,但我想我会倾向于使用编辑器,所以我可以看到我要移动的线条,而不必担心获取行号命令错了。