4 ms·
Based on your description, it sounds like: <file.json jq '.. | .fileURL? | select(startswith("http://"))' -r ... would've done the job? Or, if you can't
by Arnavion 6y ago
Based on your description, it sounds like:
<file.json jq '.. | .fileURL? | select(startswith("http://"))' -r
... would've done the job?
Or, if you can't remember `startswith`:
<file.json jq '.. | .fileURL?' -r | grep '^http://'
- donut 6y agoNice 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!