From 9b1d77e07f874cbce028dcb4b78244aaa54b5169 Mon Sep 17 00:00:00 2001 From: Karen Bradshaw Date: Sun, 18 Nov 2018 21:27:56 -0500 Subject: [PATCH] clean-up jsonpath additional functions list (#11027) --- content/en/docs/reference/kubectl/jsonpath.md | 58 ++++++++++++------- 1 file changed, 37 insertions(+), 21 deletions(-) diff --git a/content/en/docs/reference/kubectl/jsonpath.md b/content/en/docs/reference/kubectl/jsonpath.md index 8f111f2875..74fcea92fb 100644 --- a/content/en/docs/reference/kubectl/jsonpath.md +++ b/content/en/docs/reference/kubectl/jsonpath.md @@ -1,18 +1,32 @@ --- title: JSONPath Support +content_template: templates/concept +weight: 25 --- -JSONPath template is composed of JSONPath expressions enclosed by {}. -And we add three functions in addition to the original JSONPath syntax: +{{% capture overview %}} +Kubectl supports JSONPath template. +{{% /capture %}} -1. The `$` operator is optional since the expression always starts from the root object by default. -2. We can use `""` to quote text inside JSONPath expressions. -3. We can use `range` operator to iterate lists. -4. We can use negative slice indices to step backwards through a list. Negative indices do not "wrap around" a list. They are valid as long as `-index + listLength >= 0`. +{{% capture body %}} -The result object is printed as its String() function. +JSONPath template is composed of JSONPath expressions enclosed by curly braces {}. +Kubectl uses JSONPath expressions to filter on specific fields in the JSON object and format the output. +In addition to the original JSONPath template syntax, the following functions and syntax are valid: -Given the input: +1. Use double quotes to quote text inside JSONPath expressions. +2. Use the `range`, `end` operators to iterate lists. +3. Use negative slice indices to step backwards through a list. Negative indices do not "wrap around" a list and are valid as long as `-index + listLength >= 0`. + +{{< note >}} + +- The `$` operator is optional since the expression always starts from the root object by default. + +- The result object is printed as its String() function. + +{{< /note >}} + +Given the JSON input: ```json { @@ -51,20 +65,20 @@ Given the input: } ``` -Function | Description | Example | Result ----------|--------------------|--------------------|------------------ -text | the plain text | kind is {.kind} | kind is List -@ | the current object | {@} | the same as input -. or [] | child operator | {.kind} or {['kind']}| List -.. | recursive descent | {..name} | 127.0.0.1 127.0.0.2 myself e2e -\* | wildcard. Get all objects| {.items[*].metadata.name} | [127.0.0.1 127.0.0.2] -[start:end :step] | subscript operator | {.users[0].name}| myself -[,] | union operator | {.items[*]['metadata.name', 'status.capacity']} | 127.0.0.1 127.0.0.2 map[cpu:4] map[cpu:8] -?() | filter | {.users[?(@.name=="e2e")].user.password} | secret -range, end | iterate list | {range .items[*]}[{.metadata.name}, {.status.capacity}] {end} | [127.0.0.1, map[cpu:4]] [127.0.0.2, map[cpu:8]] -'' | quote interpreted string | {range .items[*]}{.metadata.name}{'\t'}{end} | 127.0.0.1 127.0.0.2 +Function | Description | Example | Result +------------------|---------------------------|---------------------------------------------------------------|------------------ +text | the plain text | kind is {.kind} | kind is List +@ | the current object | {@} | the same as input +. or [] | child operator | {.kind} or {['kind']} | List +.. | recursive descent | {..name} | 127.0.0.1 127.0.0.2 myself e2e +\* | wildcard. Get all objects | {.items[*].metadata.name} | [127.0.0.1 127.0.0.2] +[start:end :step] | subscript operator | {.users[0].name} | myself +[,] | union operator | {.items[*]['metadata.name', 'status.capacity']} | 127.0.0.1 127.0.0.2 map[cpu:4] map[cpu:8] +?() | filter | {.users[?(@.name=="e2e")].user.password} | secret +range, end | iterate list | {range .items[*]}[{.metadata.name}, {.status.capacity}] {end} | [127.0.0.1, map[cpu:4]] [127.0.0.2, map[cpu:8]] +'' | quote interpreted string | {range .items[*]}{.metadata.name}{'\t'}{end} | 127.0.0.1 127.0.0.2 -Below are some examples using jsonpath: +Examples using `kubectl` and JSONPath expressions: ```shell $ kubectl get pods -o json @@ -80,3 +94,5 @@ On Windows, you must _double_ quote any JSONPath template that contains spaces ( C:\> kubectl get pods -o=jsonpath="{range .items[*]}{.metadata.name}{'\t'}{.status.startTime}{'\n'}{end}" C:\> kubectl get pods -o=jsonpath="{range .items[*]}{.metadata.name}{\"\t\"}{.status.startTime}{\"\n\"}{end}" ``` + +{{% /capture %}} \ No newline at end of file