3 个不稳定版本

0.3.1 2019年8月25日
0.3.0 2019年8月25日
0.2.0 2019年5月17日

#unstructured 中排名 9

MIT 许可证

110KB
2.5K SLoC

Crate Documentation MIT License

jyx CLI

jyx 是一个用于操作各种格式数据的 CLI 工具。它适用于在支持的格式之间进行转换以及过滤任何支持的格式摄入的数据。

用法

jyx 允许合并和过滤任意数量的输入。一个输入源可以是 stdin,并指定输入格式,当使用时,它将被作为索引 0 的文档用于过滤目的。

Command line tool for manipulating data structures

USAGE:
    jyx [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -f, --filter <filter>                Input filter
    -i, --input <inputs>...              Input files
    -o, --output <output-file>           Output file to write if not stdout
        --format <output-format>         The format of the generated output. [default: PrettyJson]  [possible values:
                                         PrettyJson, Json, Yaml, Toml, Xml]
    -s, --stdin-format <stdin-format>    The format of stdin input. [possible values: PrettyJson, Json, Yaml, Toml, Xml]

示例

# This will print the combined result of both files to stdout
jyx -i input1.json -i input2.yaml

# Write to file instead of stdout
jyx -i input1.json -o output.json

# Convert to yaml
jyx -i input1.json -o output.yaml --format yaml

# Merge two files, write output to a yaml file, filter inputs to pull only selected fields
jyx -i Cargo.toml -i input2.json -o result.yaml --format yaml -f '[0].dependencies | [1].someData'

# Send request to XML API, convert output to JSON
curl https://raw.githubusercontent.com/danyork/sample-xml-files/master/helloworld.xml | jyx -s xml

过滤器

过滤器的语法灵感来源于另一个优秀的工具 jq,但也支持 JSON 指针语法

# Only print the key "key" in the first input document
jyx -f [0].key

# Print the first five element in the array "array" of the first input document
jyx -f [0].array.[:5]

# Print the key "key" from the first document and elements 5-10 of the array "array" from the second document
jyx -f '[0].["key"] | [1].array.[5:10]'
# Map keys can be accessed with any of the following syntaxes: .key .["key"] /key
# Specific array indexes can be accessed with an index identifier: .key.[1]
# Alternatively, keep that index in an array: .key.[1:1]
# Array ranges are open ended on either side: .key.[:5] .key.[5:] .key.[:]
# When merging documents, later values will take precedence over earlier values. Any collision in [1].key will overwrite [0].key here: [0].key | [1].key

依赖

~6.5MB
~122K SLoC