如何从信息中捕获IP地址

如何从信息中捕获IP地址

通过以下api我们可以获取master1/2机器的信息

curl -sH "X-Requested-By: ambari" -u "admin"":""admin" -i http://192.23.39.2:8080/api/v1/hosts?fields=Hosts/host_name,Hosts/ip | egrep "master1|master3"  | grep http  
      "href" : "http://192.23.39.2:8080/api/v1/hosts/master1.usa14.com",
      "href" : "http://192.23.39.2:8080/api/v1/hosts/master3.usa14.com",

现在我更新 api 以仅获取 master1/3 的 IP

curl -sH "X-Requested-By: ambari" -u "admin"":""admin" -i http://192.23.39.2:8080/api/v1/hosts?fields=Hosts/host_name,Hosts/ip | egrep "master1|master3"  | grep http | sed s'/\/\// /g' | sed s'/:/ /g' | awk '{print $3}'

192.23.39.2
192.23.39.2

但我的 api 不太优雅

还有其他建议如何捕获ip吗?

答案1

您只需使用awk字符串操作函数即可做到这一点

awk -F'/[/]?' '$NF ~ /^(master1|master3).*/{ n=split($2,arr,":"); print arr[1] }'

答案2

使用 grep :

  grep 'master[1,3]' | grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}"

答案3

使用 sed 命令完成,效果很好

命令

 sed -e "s/.*\:\///g" -e "s/:.*//g" -e "s/\///g" filename

输出

192.23.39.2
192.23.39.2

答案4

也是使用python完成的

import re
p=re.compile(r'[0-9]*\.[0-9]*\.[0-9]*')
k=open('filename','r')
for i in k:
    h=re.search(p,i)
    print h.group()

输出

192.23.39
192.23.39

相关内容