从命令输出中bash grep IP

时间:2015-06-01 16:04:29

标签: bash shell

我正在使用fleetctl和kubectl,并希望从kubectl get pod app-etcd中提取IP:

POD        IP           CONTAINER(S)   IMAGE(S)                     HOST                               LABELS          STATUS    CREATED   MESSAGE
app-etcd   10.10.0.1                                               k8s-socius-node-1/100.100.100.100   name=app-etcd   Running   3 days    
                        app-etcd       xyz/etcd-discovery                                                      Running   3 days

我最接近的IP地址是:

kubectl get pod app-etcd | grep -Eo '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'

但这给了我两个IP地址(10.10.0.1和100.100.100.100);我之后只想要/需要第一个在配置文件上运行sed

如何只获取第一个地址以将其存储在变量中以进行进一步处理?

2 个答案:

答案 0 :(得分:1)

如果您使用awk获取第二列输出(如

),该怎么办?
kubectl get pod app-etcd | awk '{print $2}'

答案 1 :(得分:1)

kubectl提供带--output / -o的json输出:

kubectl get -o json pod app-etcd | jsawk 'return this.status.podIP'