정보에서 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",

이제 master1/3의 IP만 가져오도록 API를 업데이트합니다.

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

관련 정보