Jq Usage: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 18: Line 18:
==Object Identifier-Index Filter .key==
==Object Identifier-Index Filter .key==


  .key
  .''key''


The filter expects a map and produces the value associated with the key given as argument of the filter, or null if there is no such object. The value, if exists, can be a primitive, a map or an array.
The filter expects a map and produces the value associated with the key given as argument of the filter, or null if there is no such object. The value, if exists, can be a primitive, a map or an array.
Line 28: Line 28:
The .key syntax is actually an alias for the more generic syntax:
The .key syntax is actually an alias for the more generic syntax:


  .["key"]
  .["''key''"]


If the key contains special characters, the .key alias cannot be used, and the complete .["key"] syntax should be used:
If the key contains special characters, the .key alias cannot be used, and the complete .["key"] syntax should be used:

Revision as of 18:43, 1 March 2019

Internal

Command Line Options

-r

Output raw strings, not JSON content.

Universal Filters

Identity Filter .

Map Filters

Object Identifier-Index Filter .key

.key

The filter expects a map and produces the value associated with the key given as argument of the filter, or null if there is no such object. The value, if exists, can be a primitive, a map or an array.

cat example.json | jq '.color'

This syntax only works for "identifier-like" keys: keys that are all made of alphanumeric characters and underscore, and which do not start with a digit.

The .key syntax is actually an alias for the more generic syntax:

.["key"]

If the key contains special characters, the .key alias cannot be used, and the complete .["key"] syntax should be used:

jq '.["complex::key"]'

For:

{
  "complex::key": "something"
}
jq '.complex::key'

will fail:

jq: error: syntax error, unexpected ':', expecting $end (Unix shell quoting issues?) at <top-level>, line 1:
.complex::key

while

jq '.["complex::key"]' 

will work.

Array Filters