gpt4 book ai didi

bash - 替换 yaml 文件中的行

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

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

文件看起来像这样:

# 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"

最佳答案

我会使用理解 YAML 的工具而不是纯文本操作。比如 ruby :

$ ruby -e '
require "yaml"
data = YAML.safe_load_file(ARGV[0])
net = data["network"]["ethernets"]["enp0s8"]
net["addresses"] = ["196.250.250.125/24"]
net["gateway4"] = "196.250.250.125"
net["nameservers"]["addresses"] = ["8.8.8.8"]
puts data.to_yaml
' file.yml
---
network:
version: 2
renderer: NetworkManager
ethernets:
enp0s3:
dhcp4: false
dhcp6: false
addresses:
- 195.10.10.10/24
gateway4: 195.10.10.10
nameservers:
addresses:
- 1.1.1.1
enp0s8:
dhcp4: false
dhcp6: false
addresses:
- 196.250.250.125/24
gateway4: 196.250.250.125
nameservers:
addresses:
- 8.8.8.8
enp0s9:
dhcp4: false
dhcp6: false
addresses:
- 197.10.10.10/24
gateway4: 197.10.10.10
nameservers:
addresses:
- 1.1.1.1

关于bash - 替换 yaml 文件中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68256981/

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