gpt4 book ai didi

sed - 如何将文件的一部分移动到其末尾

转载 作者:行者123 更新时间:2023-12-04 07:04:46 25 4
gpt4 key购买 nike

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 - 如何将文件的一部分移动到其末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1286883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com