I have this JSON input to JQjq
{
"names": [{
"name": "John Smith"
},{
"name": "Jane Doe"
},{
"name": "Jackson Longfellow"
}]
}
I’d like to use jq to select all the items where the length of the name is > 10 characters. This means the output would be:
{
"names": [{
"name": "Jackson Longfellow"
}]
}
The length filter only seems to count items in an array. Is there some other built-in filter to use for this?
>Solution :
Update |= the names array by selecting only those items that match. length applied to a string will output its length counting Unicode codepoints.
jq '.names |= map(select(.name | length > 10))'
{
"names": [
{
"name": "Jackson Longfellow"
}
]
}