fx-like command-line JSON processing tool. This is implementation of some functionality of fx tool.
- Don't need to learn new syntax
- Written in Go
- Formatting and highlighting
- Only ES5 (no arrow functions, no spread)
- Small binary size
- Can't use npm packages
$ go get github.com/antonmedv/gofx
Or download precompiled binary from releases page.
Pipe into gofx
any JSON and JS code for reducing it.
$ gofx [code ...]
Pretty print JSON without passing any arguments:
$ echo '{"key":"value"}' | gofx
{
"key": "value"
}
You can get access to JSON by this
keyword:
$ echo '{"foo": [{"bar": "value"}]}' | gofx 'this.foo[0].bar'
value
It is possible to omit this
keyword:
$ echo '{"foo": [{"bar": "value"}]}' | gofx .foo[0].bar
value
You can pass any number of code blocks for reducing JSON:
$ echo '{"foo": [{"bar": "value"}]}' | gofx 'this.foo' 'this[0]' 'this.bar'
value
If you need something different then JSON (for example arguments for xargs) do not return anything from reducer.
undefined
value printed into stderr by default.
$ echo '[]' | gofx 'void 0'
undefined
$ echo '[1,2,3]' | gofx 'this.forEach(function (x) { console.log(x) })' 2>/dev/null | xargs echo
1 2 3
To modify object use command separated by comma ,
and return this
as the end.
$ echo '{"a": 2}' | gofx 'this["b"] = Math.pow(this.a, 10), this'
{
"a": 2,
"b": 1024
}
Get all object keys:
$ echo '{"foo": 1, "bar": 2}' | gofx 'Object.keys(this)'
[
"foo",
"bar"
]
By the way, gofx has shortcut for Object.keys(this)
. Previous example can be rewritten as:
$ echo '{"foo": 1, "bar": 2}' | gofx ?
MIT