来自命令输出的Bash grep IP

来自命令输出的Bash grep IP,bash,shell,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

我正在与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


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

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

kubectl get pod app-etcd | awk '{print $2}'

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

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

使用
grep-m1
,只打印第一个匹配项。更好的解决方案通常是让程序以机器可读的形式输出结果;现在,这将是JSON,传统上,XML也很流行。你想要的IP地址总是在第二列吗?@tripleee-m1不适合我(OSX上的grep)。我希望输出为JSON格式,但是。。。。我不是kubectl的编辑。@tripleee浏览了文档,有人真的在程序中加入了一些想法。有JSON、XML和其他输出格式--output jsonMaybe将其作为答案发布,并接受它,这样这个问题就不会再以未解决的形式出现。这就是全部内容:IP 10.104.0.3 tleyden5iwx/etcd-discovery@Patrick,我相信您只需要每个post描述符的第一个IP(10.10.0.1),上面的命令会给出确切的输出。你是投票失败的具体原因吗?我以前试过awk,正如我在各种例子中看到的那样。但本例中的awk输出3行:IP\n 10.104.0.3\n tleyden5iwx/etcd发现。这不是问题的解决办法。