新手在这里,
我试图在启动时使用(当前) sed写入自动生成的XEN Ubuntu(12.04 / 10.04 / 8.04)DomU服务器的自动生成的/etc/network/interfaces文件。
自动生成的文件格式如下:
auto eth0
iface eth0 inet static
地址192.168.0.88
网关192.168.0.254
networking255.255.255.255
汽车
iface lo inet loopback
使用sed ,我试图改变第1和第2行,添加第三行,删除网关和最后两行,并在最后添加四个额外的行。
我现在坚持添加第三行,因为脚本每次运行时都会添加这行代码:
#!/斌/庆典 sed -i“1s /.*/ auto lo eth0 /”/ tmp / interfaces sed -i“2s /.*/ iface lo inet loopback /”/ tmp / interfaces sed -i“2a \ iface eth0 inet static”/ tmp / interfaces
是否有可能只添加第三行,如果它不存在使用sed (或awk )?
同样,如何删除网关和只有不存在的最后两行?
我是新来的sed ,所以想知道我是否应该看awk而不是实现这个?
任何帮助将不胜感激。
科林。
编辑:刚才意识到我应该问在StackOverflow这个问题
使用awk会更容易。 比方说你想改变
auto eth0 iface eth0 inet static address 192.168.0.88 gateway 192.168.0.254 network 255.255.255.255 auto lo iface lo inet loopback
至
auto ServerFault-1 iface ServerFault-1 inet static address 1.2.3.4 gateway 5.6.7.8 network 255.255.255.255 auto lo iface lo inet loopback
你可以使用下面的awk脚本
$ awk -f script.awk interfaces auto ServerFault-1 iface ServerFault-1 inet static address 1.2.3.4 gateway 5.6.7.8 network 255.255.255.255 auto lo iface lo inet loopback $ $ cat script.awk { if ($0 ~ /auto eth0/) { print $1,"ServerFault-1" } \ else if ($0 ~ /iface eth0/) { IFACE=$2; $2 ="ServerFault-1"; print $0} \ else if (($0 ~ /address/) && (IFACE ~ /eth0/)) {print $1,"1.2.3.4"} \ else if (($0 ~ /gateway/) && (IFACE ~ /eth0/)) {print $1,"5.6.7.8"} \ else print $0 } $ $ cat interfaces auto eth0 iface eth0 inet static address 192.168.0.88 gateway 192.168.0.254 network 255.255.255.255 auto lo iface lo inet loopback $