Вопрос

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, где это означает вставить).

Есть ли у вас какие-нибудь идеи, как автоматически переместить эту часть файла в конец?

Это было полезно?

Решение

Я должен ответить сам.:-)

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

Другие советы

Очень похожая задача была подробно рассмотрена здесь

Да, есть некоторое удовлетворение от хорошо проработанной команды sed, но я думаю, что предпочел бы использовать редактор, чтобы видеть строки, которые я собирался перемещать, и не беспокоиться о неправильных номерах строк в команде.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top