作为post-preseeding脚本的一部分,我想禁用ipv6。
在/etc/default/grub
中,我想更改此行:
GRUB_CMDLINE_LINX=""
所以它写着:
GRUB_CMDLINE_LINUX="ipv6.disable=1"
可以通过以下方式完成:
sed -i "s/GRUB_CMDLINE_LINUX=\"\"/GRUB_CMDLINE_LINUX=\"ipv6.disable=1\"/" /etc/default/grub
但如果GRUB_CMDLINE_LINUX中已有参数,则sed将不匹配。
如何在保留任何现有参数(如果有)的同时添加参数?
答案 0 :(得分:3)
问题是你正在整行。尝试
s/GRUB_CMD_LINE_LINUX=\"/GRUB_CMD_LINE_LINUX=\"ipv6.disable=1XXX/
将作业插入前面,并将XXX替换为用作分隔符的字符。也许 ;。可替代地
s/(GRUB_CMD_LINE_LINUX=[^\"]*)\"$/\1XXXipv6.disable=1"/
插入行尾。即在所有现有的参数之后。您可能必须转义括号和/或“在第二个版本中。
解决:
sed "s/GRUB_CMDLINE_LINUX=\"\(.*\)\"/GRUB_CMDLINE_LINUX=\"\1 ipv6.disable=1\"/" /etc/default/grub