2 min read | by Jordi Prats
When we print values using jsonpath we'll get all the values in a single line (actually, it won't even bother adding the newline character at the end of the list):
$ kubectl get ns -o jsonpath='{ .items[*].metadata.name }'
default dynamodb-operator ec2-operator iam-operator kube-node-lease kube-public kube-system local-path-storage testvault
To be able to add the new line character after each item we'll nee to iterate over it using range and append {"\n"}
after each item:
$ kubectl get ns -o jsonpath='{ range .items[*]}{.metadata.name}{"\n"}{end}'
default
dynamodb-operator
ec2-operator
iam-operator
kube-node-lease
kube-public
kube-system
local-path-storage
testvault
It's not limited to new lines, so we can use it to make it output some custom format as well. In the following example we are printing the creation timestamp using a comma as delimiter:
$ kubectl get ns -o jsonpath='{ range .items[*]}{.metadata.name}{","}{.metadata.creationTimestamp}{"\n"}{end}'
default,2023-05-12T21:15:47Z
dynamodb-operator,2023-05-29T21:24:26Z
ec2-operator,2023-05-16T21:58:59Z
iam-operator,2023-06-01T19:49:21Z
kube-node-lease,2023-05-12T21:15:45Z
kube-public,2023-05-12T21:15:45Z
kube-system,2023-05-12T21:15:45Z
local-path-storage,2023-05-12T21:15:50Z
testvault,2023-05-12T21:17:07Z
Posted on 06/06/2023