替换 yaml 文件中的行

问题描述

我正在尝试创建一个脚本来替换 01-network-manager-all.yaml 文件中给定网络接口的参数。

文件看起来像这样:

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp0s3:
      dhcp4: no
      dhcp6: no
      addresses: [195.10.10.10/24]
      gateway4: 195.10.10.10
      nameservers:
        addresses: [1.1.1.1]
    enp0s8:
      dhcp4: no
      dhcp6: no
      addresses: [196.10.10.10/24]
      gateway4: 196.10.10.10
      nameservers:
        addresses: [1.1.1.1]
    enp0s9:
      dhcp4: no
      dhcp6: no
      addresses: [197.10.10.10/24]
      gateway4: 197.10.10.10
      nameservers:
        addresses: [1.1.1.1]

假设我想替换有关 enp0s8 的行,而其他保持不变。

输出看起来像这样:

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp0s3:
      dhcp4: no
      dhcp6: no
      addresses: [195.10.10.10/24]
      gateway4: 195.10.10.10
      nameservers:
        addresses: [1.1.1.1]
    enp0s8:
      dhcp4: no
      dhcp6: no
      addresses: [196.250.250.125/24]
      gateway4: 196.250.250.125
      nameservers:
        addresses: [8.8.8.8]
    enp0s9:
      dhcp4: no
      dhcp6: no
      addresses: [197.10.10.10/24]
      gateway4: 197.10.10.10
      nameservers:
        addresses: [1.1.1.1]

在这种情况下,我正在寻找一个 sed - 或任何其他命令 - 将替换 enp0s8enp0s9 之间的所有内容。

我不是一个非常有经验的 Bash 用户,任何提示将不胜感激。

我这样做的糟糕尝试

sed -e '/^ *enp0s8:/,/^ *^enp0s9:/s/$CONFIG_TO_ADD/' "/etc/netplan/01-network-manager-all.yaml"

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)