6 ms·
Nice and terse :-) Right, the ".." part was hard to remember because it's something like: { "entries": [ { "fields": { "fileURL"
by donut 6y ago
Nice and terse :-)
Right, the ".." part was hard to remember because it's something like:
{
"entries": [
{
"fields": {
"fileURL": {
"en-US": "https://..."
},
...
},
...
},
...
]
}
and as you can see the field fileURL is actually an object with another field en-US (with a hyphen) so the jq becomes something like this:
<file.json jq -r '.entries[] | .fields | select(.fileURL) | .fileURL["en-US"] | select(startswith("http:// http://"))'
And later I had to do the same for other fields that ended in URL (websiteURL, etc.)
Anyway, gron made it simpler to get a quick summary of what I needed because it represents every node in the tree as a separate line that has the path in it, which is perfect for grep.
I still use jq more than gron :-)
- Arnavion 6y ago>Right, the ".." part was hard to remember because it's something like: You misunderstand. The command I wrote is meant to be used as I wrote it. `..` is not a placeholder for you to replace. https://stedolan.github.io/jq/manual/#RecursiveDescent%3a%2e%2e https://stedolan.github.io/jq/manual/#RecursiveDescent%3a%2e... >and as you can see the field fileURL is actually an object with another field en-US (with a hyphen) so the jq becomes something like this: Sure, so then it's: <file.json jq '.. | select(.fileURL?).fileURL["en-US"] | select(startswith("http://"))' -r
- donut 6y agoOh, I had no idea ".." was an operator. That's a pretty cool feature, combined with the "?" to match optional objects. Thanks for explaining!