mirror of
https://github.com/stedolan/jq.git
synced 2024-05-11 05:55:39 +00:00
Improve manual in various ways (inputs, sort_by, foreach sections, etc.) (#2744)
- Add error/0 and mentions null input behavior (close #2231) - Explain value iterator suffix syntax .foo[] (close #1047) - Mention array slicing is also zero-based (close #2094) - Add examples of input and inputs filters (close #2216, close #2470) - Improve sort_by about multiple values (close #2103, close #2467, close #2474) - Improve foreach section and simplify examples (close #1148, close #2169) - Fix recurse/1 document on how it is identical using recurse/2 (close #2036, close #2412) - Add non-string examples of index/1, rindex/1 (close #1422) - Simplify the example of truncate_stream/1 (close #1736)
This commit is contained in:
@@ -76,8 +76,8 @@ sections:
|
||||
jq filters run on a stream of JSON data. The input to jq is
|
||||
parsed as a sequence of whitespace-separated JSON values which
|
||||
are passed through the provided filter one at a time. The
|
||||
output(s) of the filter are written to standard out, again as a
|
||||
sequence of whitespace-separated JSON data.
|
||||
output(s) of the filter are written to standard output, as a
|
||||
sequence of newline-separated JSON data.
|
||||
|
||||
Note: it is important to mind the shell's quoting rules. As a
|
||||
general rule it's best to always quote (with single-quote
|
||||
@@ -253,9 +253,8 @@ sections:
|
||||
|
||||
You can also look up fields of an object using syntax like
|
||||
`.["foo"]` (`.foo` above is a shorthand version of this). This
|
||||
one works for arrays as well, if the key is an
|
||||
integer. Arrays are zero-based (like javascript), so `.[2]`
|
||||
returns the third element of the array.
|
||||
one works for arrays as well, if the key is an integer. Arrays
|
||||
are zero-based, so `.[2]` returns the third element of the array.
|
||||
|
||||
The `.[10:15]` syntax can be used to return a subarray of an
|
||||
array or substring of a string. The array returned by
|
||||
@@ -263,7 +262,7 @@ sections:
|
||||
index 10 (inclusive) to index 15 (exclusive). Either index may
|
||||
be negative (in which case it counts backwards from the end of
|
||||
the array), or omitted (in which case it refers to the start
|
||||
or end of the array).
|
||||
or end of the array). Indices are zero-based.
|
||||
|
||||
The `?` "operator" can also be used with the slice operator,
|
||||
as in `.[10:15]?`, which outputs values where the inputs are
|
||||
@@ -375,7 +374,7 @@ sections:
|
||||
hashes with only string keys), and "null".
|
||||
|
||||
Booleans, null, strings and numbers are written the same way as
|
||||
in javascript. Just like everything else in jq, these simple
|
||||
in JSON. Just like everything else in jq, these simple
|
||||
values take an input and produce an output - `42` is a valid jq
|
||||
expression that takes an input, ignores it, and returns 42
|
||||
instead.
|
||||
@@ -1530,29 +1529,29 @@ sections:
|
||||
input: '[[1,2],[10,20]]'
|
||||
output: ['[[1,2,1,2], [10,20,1,2]]']
|
||||
|
||||
- title: Reduce
|
||||
- title: "`reduce`"
|
||||
body: |
|
||||
|
||||
The `reduce` syntax in jq allows you to combine all of the
|
||||
results of an expression by accumulating them into a single
|
||||
answer. As an example, we'll pass `[3,2,1]` to this expression:
|
||||
The `reduce` syntax allows you to combine all of the results of
|
||||
an expression by accumulating them into a single answer.
|
||||
The form is `reduce EXP as $var (INIT; UPDATE)`.
|
||||
As an example, we'll pass `[1,2,3]` to this expression:
|
||||
|
||||
reduce .[] as $item (0; . + $item)
|
||||
|
||||
For each result that `.[]` produces, `. + $item` is run to
|
||||
accumulate a running total, starting from 0. In this
|
||||
example, `.[]` produces the results 3, 2, and 1, so the
|
||||
effect is similar to running something like this:
|
||||
accumulate a running total, starting from 0 as the input value.
|
||||
In this example, `.[]` produces the results `1`, `2`, and `3`,
|
||||
so the effect is similar to running something like this:
|
||||
|
||||
0 | (3 as $item | . + $item) |
|
||||
(2 as $item | . + $item) |
|
||||
(1 as $item | . + $item)
|
||||
0 | 1 as $item | . + $item |
|
||||
2 as $item | . + $item |
|
||||
3 as $item | . + $item
|
||||
|
||||
examples:
|
||||
- program: 'reduce .[] as $item (0; . + $item)'
|
||||
input: '[10,2,5,3]'
|
||||
output: ['20']
|
||||
|
||||
input: '[1,2,3,4,5]'
|
||||
output: ['15']
|
||||
|
||||
- title: Assignment
|
||||
body: |
|
||||
|
||||
Reference in New Issue
Block a user