该命令的目的应该是myfile.txt
自动将文件中的任何IP替换为服务器的本地IP
例子:
sed -i -e 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/LOCALIP/g' myfile.txt
我想知道是否可以使用命令在 sed 中获取本地 IP 地址
基本上我想LOCALIP
用这个命令替换我的示例
/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1
答案1
您可以在双引号中使用命令替换:
sed -i -e 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/'"$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1)/g" myfile.txt
在单引号中,这不起作用,因此在 之前结束单引号LOCALIP
,对命令使用双引号。这样,我们就不会意外地在搜索模式中进行扩展。
答案2
下面的命令对我来说效果很好
sed "s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1)/"
答案3
我用这个命令解决了我的问题
sed -i "s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/$(ifconfig | grep 'inet ' | grep -v '127.0.0.1' | awk '{print $2}')/" myfile.txt