Tag: jq

如何使用jq合并2个json文件?

我在shell脚本中使用jq工具(jq-json-processor)来parsingjson。 我有2个JSON文件,并希望合并成一个独特的文件 这里的文件内容: 文件1 { "value1": 200, "timestamp": 1382461861, "value": { "aaa": { "value1": "v1", "value2": "v2" }, "bbb": { "value1": "v1", "value2": "v2" }, "ccc": { "value1": "v1", "value2": "v2" } } } 文件2 { "status": 200, "timestamp": 1382461861, "value": { "aaa": { "value3": "v3", "value4": 4 }, "bbb": { "value3": "v3" }, "ddd": […]

如何在shellpipe道中使用`jq`?

我似乎无法让jq在shellpipe道中正常运行。 例如: $ curl -s https://api.github.com/users/octocat/repos | jq | cat 导致jq只是打印出帮助文本*。 同样的事情发生,如果我试图redirectjq的输出到一个文件: $ curl -s https://api.github.com/users/octocat/repos | jq > /tmp/stuff.json 如果jq确定它不是从tty运行的话, jq是故意排除的吗? 我怎样才能防止这种行为,以便我可以在pipe道中使用jq ? * (我知道这个例子包含了一个无用的猫 ;它只是为了说明的目的)

使用jq串行parsing和显示json中的多个字段

我有这个Json { "users": [ { "first": "Stevie", "last": "Wonder" }, { "first": "Michael", "last": "Jackson" } ] } 使用jq我想显示名字和姓氏连续。 像这样 – Stevie Wonder Michael Jackson 这是我得到了多less – jq '.users[].first, .users[].last' 但它显示 "Stevie" "Michael" "Wonder" "Jackson" 注意以下几点 – 双引号,我不想要的。 回车,我不想要。 它混乱了。 我的查询首先显示所有的名字,然后显示所有的姓氏。 不过,我想要第一个,也是最后一个。

使用jq根据对象中variables的值select对象

我有以下的json文件: { "FOO": { "name": "Donald", "location": "Stockholm" }, "BAR": { "name": "Walt", "location": "Stockholm" }, "BAZ": { "name": "Jack", "location": "Whereever" } } 我正在使用jq,并希望获得“位置”为“斯德哥尔摩”的对象的“名称”元素。 我知道我可以通过所有的名字 cat json | jq .[] | jq ."name" "Jack" "Walt" "Donald" 但我不知道如何打印只有特定的对象,给定一个子键的价值(这里"location" : "Stockholm" )。

如何根据jq内部数组中的值过滤对象数组?

给出这个input: [ { "Id": "cb94e7a42732b598ad18a8f27454a886c1aa8bbba6167646d8f064cd86191e2b", "Names": [ "condescending_jones", "loving_hoover" ] }, { "Id": "186db739b7509eb0114a09e14bcd16bf637019860d23c4fc20e98cbe068b55aa", "Names": [ "foo_data" ] }, { "Id": "a4b7e6f5752d8dcb906a5901f7ab82e403b9dff4eaaeebea767a04bac4aada19", "Names": [ "jovial_wozniak" ] }, { "Id": "76b71c496556912012c20dc3cbd37a54a1f05bffad3d5e92466900a003fbb623", "Names": [ "bar_data" ] } ] 我试图用jq构造一个filter,它返回所有带有Id的数据,这些数据不包含内部Names数组中的“data”,输出被换行分隔。 对于上面的数据,我想要的输出是 cb94e7a42732b598ad18a8f27454a886c1aa8bbba6167646d8f064cd86191e2b a4b7e6f5752d8dcb906a5901f7ab82e403b9dff4eaaeebea767a04bac4aada19 我想我有点接近这个: (. – select(.Names[] contains("data"))) | .[] .Id 但selectfilter是不正确的,它不会编译(获取error: syntax error, unexpected IDENT )。