2009-08-17 10 views
2

rpm automatisch einen neu installierten Kernel als erste Option. Allerdings möchte ich es als letztes verschieben - zum Ende der Datei.So verschieben Sie einen Teil der Datei an ihr Ende

Grub-Konfigurationsdatei sieht wie folgt aus:

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 

Mein Ziel ist es erste Option (217.2.3) zu Ende zu bewegen. Nun ich heraus, wie es zu löschen:

sed -e '/(2.6.29.6-217.2.7.fc11.x86_64)/,+3d' /boot/grub/menu.lst 

p Befehl nur druckt Stromleitung (nicht wie in vim, wo es heißt, Paste).

Haben Sie irgendwelche Ideen, wie Sie diesen Teil der Datei automatisch an ihr Ende verschieben können?

Antwort

3

Ich muss mich selbst beantworten. :-)

sed '/\(2.6.18-157.el5\)/,+4 { H; d; }; $ { p; x; }' /boot/grub/menu.lst 

Wenn Sie nicht fließend mit (ich auch nicht) sed, es ausführlichere Version

ist
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 
0

Eine sehr ähnliche Aufgabe Ja ausführlich here

bedeckt war, wird etwas Befriedigung in einem gut ausgeführten sed-Befehl, aber ich denke, ich würde eher einen Editor verwenden, damit ich die Zeilen sehen konnte, die ich bewegen wollte, und mich nicht darum kümmern musste, die Zeilennummern in einem Befehl falsch zu bekommen.