如何从命令输出中 grep 字符串

如何从命令输出中 grep 字符串
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

(拉自这个堆栈溢出线程kubectl 概述

相关内容