一尘不染

在同一行上打印多个值

json

我正在尝试解析JSON文档,并在同一行上打印几个值。有没有办法获取以下文件:

{
  "fmep": {
    "foo": 112,
    "bar": 234324,
    "cat": 21343423
  }
}

然后吐出来:

112 234324

我可以获得所需的值,但它们分别打印在不同的行上:

$ echo '{ "fmep": { "foo": 112, "bar": 234324, "cat": 21343423 } }' | jq '.fmep|.foo,.bar'

112  
234324

如果某处有一个示例说明如何执行此操作,那么我会感激任何提示。


阅读 205

收藏
2020-07-27

共1个答案

一尘不染

您的示例中最简单的方法是将String
Interpolation
-r选项一起使用。例如

echo '{ "fmep": { "foo": 112, "bar": 234324, "cat": 21343423 } }' | \
jq -r '.fmep| "\(.foo) \(.bar)"'

产生

112 234324

您可能还需要考虑将值放入数组中并使用@tsv例如

echo '{ "fmep": { "foo": 112, "bar": 234324, "cat": 21343423 } }' | \
jq -r '.fmep | [.foo, .bar] | @tsv'

产生制表符分隔的

112 234324
2020-07-27