shell命令行修改配置文件
shell command line to modify a configuration file
我搜索了这个但没有找到我的问题的答案。
我有一个配置文件,其中有一行像
server_ip=xxx.xxx.xxx.xxx
这个文件在集群的每个节点中。 server_ip 只是一个有时需要更改的 IP 地址。我知道如果提供旧 IP 地址,很容易将 server_ip 更改为新 IP 地址。但我不想继续跟踪旧 IP 地址。我只是想强制 server_ip 地址更改为新值。所以这里的重点是我们不想使用 xxx.xxx.xxx.xxx 部分来识别这一行。相反,我们只能使用 'server_ip=' 作为定位器,在定位到这一行之后,我们只需将 server_ip 设置为一个新值。
谢谢。
GNU sed 有一个就地选项 -i。该命令是一个简单的替换,它替换与新字符串匹配的每个字符串。我们使用双引号,以便我们可以访问包含新地址的环境变量。由于双引号,我们必须对表示匹配模式中的 EOL 的 $ 进行转义,否则 shell 会尝试在其后查看变量名。
我没有对此进行测试,所以它可能是错误的,但应该让你接近。 (已更新以包括 OP 的修复。)
newIp=1.2.3.4; sed -i bak "s/server_ip=.*$/server_ip=$newIp/g" configfile
使用 SED!
echo "server_ip=xxx.xxx.xxx.xxx" > file.txt
sed 's/server_ip=.*/server_ip=NEW_IP/g' < file.txt > tmpFile
我搜索了这个但没有找到我的问题的答案。
我有一个配置文件,其中有一行像
server_ip=xxx.xxx.xxx.xxx
这个文件在集群的每个节点中。 server_ip 只是一个有时需要更改的 IP 地址。我知道如果提供旧 IP 地址,很容易将 server_ip 更改为新 IP 地址。但我不想继续跟踪旧 IP 地址。我只是想强制 server_ip 地址更改为新值。所以这里的重点是我们不想使用 xxx.xxx.xxx.xxx 部分来识别这一行。相反,我们只能使用 'server_ip=' 作为定位器,在定位到这一行之后,我们只需将 server_ip 设置为一个新值。
谢谢。
GNU sed 有一个就地选项 -i。该命令是一个简单的替换,它替换与新字符串匹配的每个字符串。我们使用双引号,以便我们可以访问包含新地址的环境变量。由于双引号,我们必须对表示匹配模式中的 EOL 的 $ 进行转义,否则 shell 会尝试在其后查看变量名。
我没有对此进行测试,所以它可能是错误的,但应该让你接近。 (已更新以包括 OP 的修复。)
newIp=1.2.3.4; sed -i bak "s/server_ip=.*$/server_ip=$newIp/g" configfile
使用 SED!
echo "server_ip=xxx.xxx.xxx.xxx" > file.txt
sed 's/server_ip=.*/server_ip=NEW_IP/g' < file.txt > tmpFile