kubectl:获取剪切的 pod 名称

kubectl: get cut pod name

我正在玩“kubectl get pods...”,并且有用例:

我有一些 pods 回来了(让我们只留下名字):

$ kubectl get pods | cut -d' ' -f1

admin-fe-124
admin-be-12345
some-Other-Staff-123

问题:是否可以过滤掉(使用 kubectl get pods)名字的前 2 个单词(3...4...如我所愿)? 我想看以下内容:

$ kubectl get pods... (some magic)

admin-be
admin-fe
some-Other

那么,"some magic"下面应该有什么?谢谢!

你的意思是只打印第一列吗?名字?

kubectl get po | awk '{print }'
NAME
kubeserve-68776dd94c-2wmc9
kubeserve-68776dd94c-qvg6c
kubeserve-68776dd94c-vqbcf
myreplicaset-gd6hj
myreplicaset-mfthn
myreplicaset-nsb9s
nginx-7db9fccd9b-hrp57
nginx-7db9fccd9b-m6t6l
ssd-monitor-lgmmr
ssd-monitor-m5sz6

然后您可以使用

awk '{print , }'

编辑:或者您的意思是打印前两个条目?

在这种情况下,只需将输出通过管道传递给 set 并跳过第一行,例如

kubectl get po | awk '{print }' | sed -n 2,3p
kubeserve-68776dd94c-2wmc9
kubeserve-68776dd94c-qvg6c

这样试试

kubectl get pods | awk -F '-' {'print ,'}

其中“-”就像分隔符,$1、$2 ... 是单词

使用数组和变量替换

# test function to create needed output
test_names () {
    echo "
        admin-fe-124
        admin-be-12345
        some-Other-Staff-123
    "
}

test=( $(test_names) ) # create an array
echo "${test[@]%-*}"   # use variable substitution to cut last part

你的情况

names=( $(kubectl get pods | cut -d' ' -f1) )
echo "${names[@]%-*}"