我正在尝试解析JSON文档并在同一行上打印几个值.有没有办法采取以下文件:
{
"fmep": {
"foo": 112,
"bar": 234324,
"cat": 21343423
}
}
Run Code Online (Sandbox Code Playgroud)
并吐出:
112 234324
Run Code Online (Sandbox Code Playgroud)
我可以得到我想要的值,但它们打印在不同的行上:
$ echo '{ "fmep": { "foo": 112, "bar": 234324, "cat": 21343423 } }' | jq '.fmep|.foo,.bar'
112
234324
Run Code Online (Sandbox Code Playgroud)
如果有一个示例显示如何执行此操作,我会很感激任何指针.
jq1*_*727 18
您的示例中最简单的方法是使用字符串插值和-r
选项.例如
echo '{ "fmep": { "foo": 112, "bar": 234324, "cat": 21343423 } }' | \
jq -r '.fmep| "\(.foo) \(.bar)"'
Run Code Online (Sandbox Code Playgroud)
产生
112 234324
Run Code Online (Sandbox Code Playgroud)
您可能还想考虑将值放在数组中并使用@tsv例如
echo '{ "fmep": { "foo": 112, "bar": 234324, "cat": 21343423 } }' | \
jq -r '.fmep | [.foo, .bar] | @tsv'
Run Code Online (Sandbox Code Playgroud)
它产生制表符分隔
112 234324
Run Code Online (Sandbox Code Playgroud)
假设我们的 JSON ( example.json ) 如下所示: { "hello":"world", "foo":"bar" }
为了将几个字段加入同一行,您可以:
$ jq -j '.hello,.foo' example.json
Run Code Online (Sandbox Code Playgroud)
这将导致
worldbar
Run Code Online (Sandbox Code Playgroud)
想要添加分隔符吗?比如说一个空格
$ jq -j '.hello," ",.foo' example.json
Run Code Online (Sandbox Code Playgroud)
这将导致
world bar
Run Code Online (Sandbox Code Playgroud)
*只需确保您使用的是 jq 1.5 或更高版本
以下是使用连接输出 ( -j
)的语法:
jq -j '.fmep | .foo, " ", .bar, "\n"' payload.json
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6383 次 |
最近记录: |