使用jq拆分多个输入JSON

时间:2018-11-27 09:29:58

标签: json shell jq

给出JSON行

{"a":0,"b":{"c":"C"}}{"x":33}{"asd":889}

3个独立的JSON对象。

然后需要一一处理。拥有

这样的东西会很好
echo "$json" | jq --first-one

预期输出:

{"a":0,"b":{"c":"C"}}

我找到了唯一可以删除第一个对象并输出其他对象的命令。 inputs

echo '{"a":0,"b":{"c":"C"}}{"x":33}{"asd":889}' | jq -c inputs

输出:

{"x":33}
{"asd":889}

如何仅从输入流中读取第一个对象,而不触摸其余对象?

解决方法

在撰写此问题时,我找到了一种解决方法,但是看起来很麻烦

echo '{"a":0,"b":{"c":"C"}}{"x":33}{"asd":889}' | jq -c . | head -1

仅获得第一行...

1 个答案:

答案 0 :(得分:2)

如果可能的话,一般应避免制浆。如果您的jq有input,则可以简单地写:

echo '{"a":0,"b":{"c":"C"}}{"x":33}{"asd":889}' |
  jq -n input

如果您的jq没有input,那么现在是升级到jq 1.6的好时机。如果那不是一个选项,则一定要使用-s选项,例如jq -s '.[0]'