Search code examples
jsonkeyfilteringjq

How do I remove all keys except one with jq?


Given a list of objects, with many keys I don't want:

[{
    "name": "Alice",
    "group": "Admins",
    "created": "2014"
}, {
    "name": "Bob",
    "group": "Users",
    "created": "2014"
}]

How do I filter these objects to only include keys I want?

[{
    "name": "Alice"
}, {
    "name": "Bob"
}]

I've tried jq '.[].name' but that extracts the values, rather than preserving the objects.


Solution

  • You can use the map() function to filter any key:

    jq 'map({name: .name})'
    

    Update

    Suggested by @WilfredHughes: The above filter can be abbreviated as follows:

    jq 'map({name})'