bash脚本将ip地址插入属性文件

时间:2014-05-27 16:24:52

标签: bash sed

我有一个属性文件,其中包含以下条目:

some.url={ipaddress}/blah

我想用{ipaddress}替换正在运行的机器的ip。

我找到了这个命令:

ipconfig getifaddr en0

输出ip。

我也发现sed对于这类事情很有用,但我不能完全把它放在一起。

sed -i '' 's/{ipaddress}/192.168.0.1/g' test.properties

需要用硬编码的IP地址192.168.0.1代替机器的地址。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

您可以将ipconfig命令的结果存储在如下变量中:

ip=$(ipconfig getifaddr en0)

然后通过用双引号括起表达式将其插入到sed命令中:

sed -i "" "s/{ipaddress}/$ip/g" test.properties

答案 1 :(得分:0)

试试这个:

cat file
some.url=10.10.10.5/blah

awk -F"=|/" '{print $1 "=" ip "/" $3}' ip=$(ip route get 8.8.8.8 | awk '{print $NF;exit}') file
some.url=192.168.1.30/blah

ip route get 8.8.8.8 | awk '{print $NF;exit}'是我发现获得正确IP的最好方法之一。它甚至可以在VPS服务器和具有多个IP的服务器上运行