![Как выполнить grep строк из вывода команды](https://rvso.com/image/154438/%D0%9A%D0%B0%D0%BA%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D1%8C%20grep%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%20%D0%B8%D0%B7%20%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B0%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B.png)
NAME READY STATUS RESTARTS AGE
grepme 1/1 Running 0 20h
grepmetoo 1/1 Running 0 19h
Результат:
grepme
grepmetoo
Как выполнить grep-фильтрацию всего содержимого под «NAME» и удалить все остальное?
решение1
Использовать
command | cut -d' ' -f1 | tail -n+2
# or if delimiter is tab
command | cut -f1 | tail -n+2
# or
command | awk 'NR>1{print $1}'
# or
command | csvcut -d' ' -c NAME | tail -n+2
# or if delimiter is tab
command | csvcut -t -c NAME | tail -n+2
Как вы упомянули grep
, вы также можете использовать
command | grep -o '^[^[:blank:]]*' | tail -n+2
Но я бы предпочел один из вышеперечисленных вариантов, так как его гораздо сложнее читать. У
решения cut
наилучшая производительность, csvcut
намного худшая.
решение2
Для начала рассмотрите возможность вывода только желаемых данных:
kubectl get pods --no-headers=true -o custom-columns=":metadata.name"
или
kubectl get pods --no-headers=true -o name
(Взято изэта ветка Stack Overflowиобзор kubectl)