shell命令行来修改配置文件

时间:2015-01-29 21:37:29

标签: shell

我搜索了这个,但没有找到我的问题的答案。

我有一个配置文件,它有一行像

SERVER_IP = xxx.xxx.xxx.xxx

此文件位于群集中的每个节点中。 server_ip只是一个有时需要更改的IP地址。据我所知,如果给出旧的ip地址,很容易将server_ip更改为新的ip地址。但我不想继续跟踪旧的IP地址。我只想强制server_ip地址更改为新值。所以这里的重点是我们不想使用xxx.xxx.xxx.xxx部分来识别这一行。相反,我们只能使用'server_ip ='作为定位器,在找到此行之后,我们只需将server_ip设置为新值。

感谢。

2 个答案:

答案 0 :(得分:1)

GNU sed有一个就地选项-i。该命令是一个简单的替代命令,用于替换与新字符串匹配的每个字符串。我们使用双引号,以便我们可以访问包含新地址的环境变量。由于双引号,我们必须转义$表示匹配模式中的EOL,否则shell会尝试在其后面看到变量名。

我没有对此进行测试,所以它可能不对,但应该让你接近。 (已更新,包含OP的修复程序。)

newIp=1.2.3.4; sed -i bak "s/server_ip=.*\$/server_ip=$newIp/g" configfile

答案 1 :(得分:0)

使用SED!

echo "server_ip=xxx.xxx.xxx.xxx" > file.txt
sed 's/server_ip=.*/server_ip=NEW_IP/g' < file.txt  > tmpFile