One tool to replace jq, yq, grep, awk, and cut. Pipes, filters, mutations, output conversion, and JSONL streaming.
cargo install pick-cli
Objects, arrays, nested structures
Config files, Kubernetes manifests
Cargo.toml, pyproject.toml
Environment variable files
curl -I output, response headers
Structured log lines
Tabular data with headers
Key-value fallback and substring search
| foo | Top-level key |
| foo.bar | Nested key |
| foo[0] | Array index |
| foo[-1] | Last element |
| foo[1:3] | Array slice (elements 1, 2) |
| foo[:2] | First two elements |
| foo[-2:] | Last two elements |
| foo[*].name | Pluck field from all elements |
| ..key | Recursive descent — find key anywhere |
| name, age | Multiple selectors (union) |
| [0] | Index into root array |
| "dotted.key".sub | Quoted key for dots in names |
Chain operations with the pipe operator. Filter arrays with select() using comparison operators, regex, and boolean logic.
| ==, != | Equality / inequality |
| >, <, >=, <= | Numeric comparisons |
| ~ | Regex match |
| and, or, not | Boolean combinators |
Built-in functions for introspection and aggregation, usable anywhere in a pipeline.
| keys() | Object keys as array |
| values() | Object values as array |
| length() | Length of array, object, or string |
Immutable tree operations — set() adds or replaces keys, del() removes them. Both return the full modified document.
Convert between formats on the fly with -o / --output. Input format is auto-detected; output format is your choice.
Process newline-delimited JSON line by line with --stream. Each line is parsed and queried independently — perfect for log files and event streams.
-i, --input <format>
Force input format
-o, --output <format>
Output as json, yaml, or toml
-f, --file <path>
Read from file instead of stdin
--stream
JSONL line-by-line mode
--json
Output as JSON
--lines
One element per line
-1, --first
Only first result
-d, --default <val>
Fallback value
-e, --exists
Exit code only (0/1)
-c, --count
Count matches
-r, --raw
No quotes on strings
-q, --quiet
Suppress errors
Rust ecosystem
cargo install pick-cli
macOS & Linux
brew install aryanbhosale/pick/pick
Node.js ecosystem
npm install -g @aryanbhosale/pick
Linux
snap install pick-cli
Windows
choco install pick
Windows
winget install aryanbhosale.pick
Any platform
docker run -i ghcr.io/aryanbhosale/pick