Skip to main content

jpx-cli

Run jpx to query and transform JSON from the command line. Covers output formats (CSV, TSV, table, YAML), streaming NDJSON, input modes (slurp, raw-input, null-input), query files, variable binding, and shell pipelines. Use when building shell pipelines or exporting JSON data.

跳到安装

来源信息

仓库
joshrotenberg/jpx
最近来源活动
2026年8月24日 17:29
检测到的 SKILL.md 语言
英语
星标
4
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
4 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
jpx-cli
description
Run jpx to query and transform JSON from the command line. Covers output formats (CSV, TSV, table, YAML), streaming NDJSON, input modes (slurp, raw-input, null-input), query files, variable binding, and shell pipelines. Use when building shell pipelines or exporting JSON data.
license
MIT OR Apache-2.0
metadata
{"author":"joshrotenberg","version":"1.0"}
allowed-tools
Bash(jpx:*)
# jpx CLI Usage Guide jpx is a JMESPath CLI with 470+ extension functions. It reads JSON, applies expressions, and outputs results in multiple formats. ## Basic Usage ```bash # Expression as positional argument echo '{"name":"alice"}' | jpx 'name' # -> "alice" # File input jpx 'users[*].name' data.json # Explicit file flag jpx -f data.json 'users[*].name' # Null input (no stdin needed) jpx -n 'now()' # Multiple expressions (chained pipeline) jpx '[*].name' 'sort(@)' '[0]' data.json # Same with -e flags jpx -e '[*].name' -e 'sort(@)' -e '[0]' -f data.json ``` ## Output Formats ### JSON (default) ```bash jpx 'expression' data.json # pretty-printed, colored jpx -c 'expression' data.json # compact (one line) jpx --indent 4 'expression' data.json # 4-space indent jpx --tab 'expression' data.json # tab indent jpx -S 'expression' data.json # sort object keys jpx --color never 'expression' data.json # no color ``` ### Raw strings ```bash jpx -r 'name' data.json # "alice" -> alice (no quotes) jpx -j 'name' data.json # raw, no trailing newline ``` ### CSV / TSV ```bash jpx --csv 'users[*]' data.json # CSV with headers from object keys jpx --tsv 'users[*]' data.json # tab-separated # Nested objects are flattened: {"addr":{"city":"NYC"}} -> addr.city column ``` ### Table ```bash jpx -t 'users[*]' data.json # formatted table jpx -t --table-style ascii 'users[*]' data.json # Styles: unicode (default), ascii, markdown, plain, rounded, sharp, modern ``` ### YAML / TOML ```bash jpx -y 'config' data.json # YAML output jpx --toml 'config' data.json # TOML output ``` ### Lines (NDJSON) ```bash jpx -l 'users[*]' data.json # one JSON value per line ``` ### Output to file ```bash jpx -o result.json 'expression' data.json jpx --csv -o data.csv 'users[*]' data.json ``` ## Input Modes ### Slurp (`-s`) Combine multiple JSON values from stdin into a single array: ```bash echo -e '{"id":1}\n{"id":2}\n{"id":3}' | jpx -s 'length(@)' # -> 3 ``` ### Raw input (`-R`) Read each line as a JSON string (not parsed as JSON): ```bash echo -e "hello\nworld" | jpx -R -s '[*] | sort(@)' # -> ["hello", "world"] ``` ### Null input (`-n`) Use `null` as input, don't read stdin: ```bash jpx -n 'now()' # current timestamp jpx -n 'range(`1`, `11`)' # [1,2,...,10] jpx -n 'uuid()' # random UUID ``` ### Multiple files (`--per-file`) Evaluate once per shell-expanded input path without starting a new process: ```bash jpx --per-file --lines '{file: $file, count: length(@)}' *.json jpx --per-file --slurp --lines -Q queries.jpx:summary *.jsonl ``` Results form one outer array; `--lines` emits one value per input file. `-s` slurps each file independently, and `$file` is the path exactly as passed. ## Streaming Mode Process NDJSON line by line with constant memory: ```bash # Each line processed independently cat events.ndjson | jpx --stream 'user.name' # Null results are automatically skipped cat events.ndjson | jpx --stream '[?level == `error`] | [0]' # Streaming with CSV output (headers from first record) cat events.ndjson | jpx --stream --csv '{user: user.name, action: event}' # Streaming with TSV cat events.ndjson | jpx --stream --tsv '@' # Unbuffered output (flush after each record) tail -f events.ndjson | jpx --stream --unbuffered 'message' ``` **Note:** `--stream` is incompatible with `--table`, `--yaml`, `--toml`, and `--lines` (these need the full dataset). Use `--slurp` instead if you need those formats. See [references/streaming.md](references/streaming.md) for more streaming patterns. ## Variable Binding Bind variables for use in expressions: ```bash # String variable jpx --arg name Alice '[?name == $name]' data.json # JSON variable (parsed) jpx --argjson threshold 42 '[?score > $threshold]' data.json jpx --argjson ids '[1,2,3]' '[?contains($ids, id)]' data.json ``` ## Query Files Save and reuse expressions with `.jpx` query files: ```bash # Run a named query jpx -Q queries.jpx:active-users data.json # Alternative syntax jpx -Q queries.jpx --query active-users data.json # List available queries jpx -Q queries.jpx --list-queries # Validate queries without running jpx -Q queries.jpx --check ``` See [references/query-files.md](references/query-files.md) for the `.jpx` file format. ## Function Discovery ```bash jpx --list-functions # all 490+ functions jpx --list-category String # functions in a category jpx --describe format_date # detailed function info jpx --search "date format" # fuzzy search jpx --similar group_by # find related functions ``` ## Data Inspection ```bash jpx --stats -f data.json # type, size, depth analysis jpx --paths -f data.json # all paths in dot notation jpx --paths --types -f data.json # paths with types jpx --paths --values -f data.json # paths with values ``` ## JSON Operations ```bash # Diff two files (RFC 6902 JSON Patch) jpx --diff before.json after.json # Apply a patch jpx --patch changes.json -f original.json # Merge (RFC 7396) jpx --merge overlay.json -f base.json ``` ## Other Features ```bash # Explain expression (AST breakdown) jpx --explain 'sort_by([*], &name) | [0]' # Benchmark jpx --bench 1000 'complex.expression' data.json # Interactive REPL jpx --repl -f data.json # file is initial data; stdin stays commands jpx --repl --demo users # with demo dataset jpx --repl -f data.json --no-history # private/ephemeral session # Exit status (for shell conditionals) jpx -x '[?critical]' data.json && echo "found critical items" ``` ## Shell Pipeline Recipes ```bash # Fetch API, extract, and format as table curl -s https://api.example.com/users | jpx -t '[*].{name: name, email: email}' # Process log file, count errors by type cat app.log | jpx --stream -s '[*]' | jpx 'group_by(@, &error_type)' # Convert JSON to CSV for spreadsheet jpx --csv 'records[*]' -o export.csv data.json # Find largest files in package.json dependencies jpx 'dependencies | keys(@) | sort(@)' package.json ``` ## Related Skills - [jmespath-query](../jmespath-query/SKILL.md) -- JMESPath expression syntax - [jpx-functions](../jpx-functions/SKILL.md) -- 470+ extension functions - [jpx-mcp](../jpx-mcp/SKILL.md) -- MCP server for AI agent integration
在 GitHub 查看