2

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の場合とは異なります)。

ファイルのこの部分を自動的に最後まで移動する方法について何かアイデアはありますか?

4

2 に答える 2

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
于 2009-08-17T11:41:48.597 に答える
0

非常によく似たタスクがここで広範囲にカバーされました

はい、巧妙に作成されたsedコマンドにはある程度の満足感がありますが、エディターを使用する傾向があると思うので、移動しようとしている行を確認でき、行番号を間違えることを心配する必要はありません。指図。

于 2009-08-17T12:15:46.073 に答える