将grep搜索结果传递给sed replace

时间:2014-05-19 03:14:46

标签: bash sed grep

我正在编写一个脚本来使用当前动态地址更新hosts文件。我从ifconfig获取地址并使用sed更新/ etc / hosts。

#following returns the current VPN address e.g. 10.8.0.14
ifconfig | grep -oP 'inet addr:\K(.*)?(?=  P-t-P)'

#following can be used to replace the original one with the VPN address
sudo sed -i 's/127.0.1.1/{new address}/g' /etc/hosts

但是如何将grep的输出传输到sed中的替换文本{new address}?是否可以在一条线上执行此操作?

1 个答案:

答案 0 :(得分:4)

使用command substitution

sudo sed -i "s/127.0.1.1/$(ifconfig | grep -oP 'inet addr:\K(.*)?(?=  P-t-P)')/g" /etc/hosts