kubectl: вырезать имя стручка - PullRequest
0 голосов
/ 10 января 2020

Я играю с "kubectl get pods...", и есть вариант использования:

У меня возвращаются несколько модулей (давайте оставим только имена):

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

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

Вопрос: возможно ли это отфильтровать (kubectl get pods) только сначала, например, 2 слова (3 ... 4 ... как я sh) имени? Я хочу видеть следующее:

$ kubectl get pods... (some magic)

admin-be
admin-fe
some-Other

Итак, что должно быть там под "некоторыми волхвами c"? Спасибо!

Ответы [ 3 ]

2 голосов
/ 10 января 2020

Вы хотите напечатать только первый столбец, например, Имена?

kubectl get po | awk '{print $1}'
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 $1, $2}' et c.

edit: or Вы хотите напечатать первые две записи?

В этом случае просто направьте вывод для установки и пропустите первую строку, например

kubectl get po | awk '{print $1}' | sed -n 2,3p
kubeserve-68776dd94c-2wmc9
kubeserve-68776dd94c-qvg6c
0 голосов
/ 10 января 2020

Использование массива и подстановка переменных

# 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[@]%-*}"
0 голосов
/ 10 января 2020

Попробуйте таким образом

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

, где '-' - это разделитель, а $ 1, $ 2 ... - это слова

...