我搜索了这个,但没有找到我的问题的答案。
我有一个配置文件,它有一行
Server_ip=xxx.xxx
此文件位于集群中的每个节点中。server_ip只是一个IP地址,有时需要更改。我知道,如果给出了旧的ip地址,那么很容易将server_ip更改为新的ip地址。但我不想一直追踪旧的IP地址。我只想强迫server_ip地址更改为一个新值。所以这里的重点是,我们不想使用xxx.xxx部件来识别这一行。相反,我们只能使用'server_ip=‘作为定位器,而在这一行被定位之后,我们只是将server_ip设置为一个新的值。
谢谢。
发布于 2015-01-29 21:48:09
GNU有一个就地选项-i。该命令是一个简单的替代,它替换与新字符串匹配的每个字符串。我们使用双引号,以便能够访问包含新地址的环境变量。由于双引号,我们必须转义$,$表示匹配模式中的EOL,否则shell将试图在其后面看到变量名。
我没有测试这个,所以这可能是错误的,但应该能让你接近。(更新后包括OP的修复。)
newIp=1.2.3.4; sed -i bak "s/server_ip=.*\$/server_ip=$newIp/g" configfile发布于 2015-01-29 21:52:39
用SED!
echo "server_ip=xxx.xxx.xxx.xxx" > file.txt
sed 's/server_ip=.*/server_ip=NEW_IP/g' < file.txt > tmpFilehttps://stackoverflow.com/questions/28225086
复制相似问题