2 ms·
This is about JSON xmlstarlet supports XPath 1, but the W3C did not stop there. They made XPath 2 featuring variables, lists and regular expressions, XPath 3
by benibela 6y ago
This is about JSON
xmlstarlet supports XPath 1, but the W3C did not stop there. They made XPath 2 featuring variables, lists and regular expressions, XPath 3 featuring higher order function, and finally XPath 3.1 featuring JSON support.
For example,
echo '[{"a": 1}, {"a": 2, "b": 3}, {"c": 4}]' | xidel - -e '?*?a!(. * 100)'
will print 100 and 200.
Or the same with a verbose syntax:
echo '[{"a": 1}, {"a": 2, "b": 3}, {"c": 4}]' | xidel - -e 'for $obj in array:flatten(.) return map:get($obj, "a") * 100'
- jeffbee 6y agoThat's news to me. Very cool actually. It's not far from jq on speed, either. Looks like you are the maintainer of this tool, so thanks! ~/xidel % time ./xidel - -e '?SitusAddress!(.)' < ~/parcels | wc **** Processing: stdin:/// **** 29066 149317 903704 ./xidel - -e '?SitusAddress!(.)' < ~/parcels 2.55s user 0.18s system 99% cpu 2.733 total wc 0.01s user 0.00s system 0% cpu 2.733 total ~/xidel % time jq -r '.SitusAddress' < ~/parcels | wc 29066 149317 903704 jq -r '.SitusAddress' < ~/parcels 0.95s user 0.00s system 99% cpu 0.958 total wc 0.00s user 0.01s system 1% cpu 0.957 total