So greppen Sie Zeichenfolgen aus der Befehlsausgabe

So greppen Sie Zeichenfolgen aus der Befehlsausgabe
NAME                READY     STATUS    RESTARTS   AGE
grepme              1/1       Running   0          20h
grepmetoo           1/1       Running   0          19h

Ergebnis:

grepme
grepmetoo

Wie kann ich alles unter „NAME“ greppen und alles andere entfernen?

Antwort1

Verwenden

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

Wie Sie bereits erwähnt haben grep, können Sie auch

command | grep -o '^[^[:blank:]]*' | tail -n+2

Aber ich würde eine der oben genannten Lösungen bevorzugen, da sie viel schwieriger zu lesen ist.
Die cutLösung hat die beste Leistung, csvcutbei weitem die schlechteste.

Antwort2

Überlegen Sie, zunächst nur die gewünschten Daten auszugeben:

kubectl get pods --no-headers=true -o custom-columns=":metadata.name"

oder

kubectl get pods --no-headers=true -o name

(Gezogen ausdieser Stack Overflow-Threadund daskubectl-Übersicht)

verwandte Informationen