我知道这是一个简单的答案,在漫步答案之前,我可能会继续在谷歌上挖掘。但我的时间紧迫,我希望得到一个简单的回应。
我需要在安装时更新ifcfg-eth0中的变量。换句话说,这就是需要发生的事情:
以下变量需要更改:
ONBOOT=no
BOOTPROTO=dhcp
到
ONBOOT=yes
BOOTPROTO=static
提前致谢!
干杯。
答案 0 :(得分:3)
sed -i -e '/^ONBOOT=/s|.*|ONBOOT=yes|; /^BOOTPROTO=/s|.*|BOOTPROTO=static|' file
还可以尝试:
sed -i -re 's|^(ONBOOT=).*|\1yes|; s|^(BOOTPROTO=).*|\1static|' file
或者
sed -i -e 's|^\(ONBOOT=\).*|\1yes|; s|^\(BOOTPROTO=\).*|\1static|' file
答案 1 :(得分:3)
您可以使用这样的内容,它可以让您准确定义要在文件中添加的值:
$ bootproto="static"
$ sed -r "s/(BOOTPROTO\s*=\s*).*/\1$bootproto/" file
ONBOOT=no
BOOTPROTO=static
将两个人放在一起:
$ onboot="yes"
$ bootproto="static"
$ sed -r -e "s/(ONBOOT\s*=\s*).*/\1$onboot/" -e "s/(BOOTPROTO\s*=\s*).*/\1$bootproto/" file
ONBOOT=yes
BOOTPROTO=static
(BOOTPROTO\s*=\s*).*
捕获一组包含BOOTPROTO
+ any_number_of_spaces + =
+ any_number_of_spaces的文本。然后,匹配我们要删除的文本的其余部分。 \1$var
将其与给定变量一起打印出来。\s*
保持当前空格不变,然后替换使用bash变量$bootproto
更改当前文本的同一行。-r
用于抓取()
而不是\(
和\)
的群组。要进行适当的编辑,请使用sed -i.bak
。这将创建文件file.bak
的备份,file
将使用新内容进行更新。
所有在一起:
sed -ir -e "s/(ONBOOT\s*=\s*).*/\1$onboot/" -e "s/(BOOTPROTO\s*=\s*).*/\1$bootproto/" file
答案 2 :(得分:0)
与sed
perl
解决方案类似
perl -i.bak -pe 's/(ONBOOT)=no/$1=yes/;s/(BOOTPROTO)=dhcp/$1=static/' files....