jq: Quick Start and Command Example
This post shows examples of jq usage.
what is jq?
jq is a command-line JSON parser.
It can pretty print JSON, access specified keys & values, etc.
install
% brew install jq
% jq --version
jq-1.6
sample.json
[{"name":"n1","created":"2021-02-15","settings":[{"name":"setting1","value":"value1"},{"name":"setting2","value":"value2"}]},{"name":"n2","created":"2021-02-16","settings":[{"name":"setting1","value":"value1"}]}]
examples
pretty format
% cat sample.json | jq .
[
{
"name": "n1",
"created": "2021-02-15",
"settings": [
{
"name": "setting1",
"value": "value1"
},
{
"name": "setting2",
"value": "value2"
}
]
},
{
"name": "n2",
"created": "2021-02-16",
"settings": [
{
"name": "setting1",
"value": "value1"
}
]
}
]
remove array bracket
% cat sample.json | jq -r '.[]'
{
"name": "n1",
"created": "2021-02-15",
"settings": [
{
"name": "setting1",
"value": "value1"
},
{
"name": "setting2",
"value": "value2"
}
]
}
{
"name": "n2",
"created": "2021-02-16",
"settings": [
{
"name": "setting1",
"value": "value1"
}
]
}
select first element of array
% cat sample.json | jq -r '.[0]'
{
"name": "n1",
"created": "2021-02-15",
"settings": [
{
"name": "setting1",
"value": "value1"
},
{
"name": "setting2",
"value": "value2"
}
]
}
list names
% cat sample.json | jq -r '.[].name'
n1
n2
list names (as array format)
% cat sample.json | jq -r '.[] | [.name]'
[
"n1"
]
[
"n2"
]
list settings.name
% cat sample.json | jq -r '.[].settings[].name'
setting1
setting2
setting1
list names & settings.name
% cat sample.json | jq -r '.[] | {name: .name, setting_name: .settings[].name}'
{
"name": "n1",
"setting_name": "setting1"
}
{
"name": "n1",
"setting_name": "setting2"
}
{
"name": "n2",
"setting_name": "setting1"
}
objects into arrays
% cat sample.json | jq -r '.[] | {name: .name, setting_name: .settings[].name} | [.name, .setting_name]'
[
"n1",
"setting1"
]
[
"n1",
"setting2"
]
[
"n2",
"setting1"
]
arrays to csv
% cat sample.json | jq -r '.[] | {name: .name, setting_name: .settings[].name} | [.name, .setting_name] | @csv'
"n1","setting1"
"n1","setting2"
"n2","setting1"
Comments
Post a Comment