【发布时间】:2021-08-25 08:28:36
【问题描述】:
我有一个 bash 脚本,我希望该脚本通过删除现有 IP 地址来替换主机文件中的“IP 地址”。
我的主机文件包含以下条目..
[buildservers]
10.10.10.01
10.10.10.02
10.10.10.03
[buildservers:vars]
ansible_connection=ssh
ansible_user=root
运行脚本后我的预期结果
[buildservers]
10.10.10.11
10.10.10.12
10.10.10.13
[buildservers:vars]
ansible_connection=ssh
ansible_user=root
下面是我的 bash 脚本
#!/bin/bash
hosts=/opt/data/hosts
if [ -f $hosts ] ; then
echo "Hosts file exists"
update_host
else
echo "Hosts: No such file"
exit 0;
fi
update_host() {
sed -i '/^\[buildservers\].*/!b;n;c$1' $hosts
}
但它只是替换第一个 IP 地址,而不是删除现有的 IP 地址。
请提供正确的“sed”来执行此操作..
【问题讨论】:
-
你不需要
g标志吗? -
sed '/\[buildservers\]/ {n;N;N;s/\.0/.1/g}'应该可以达到您想要的结果,但不是理想的解决方案。
标签: bash