Questions tagged «jq»

jq是用于JSON数据的类似于sed的工具-您可以使用sq来轻松地对结构化数据进行切片,过滤,映射和转换,就像sed,awk,grep和friends可以让您玩文本一样。

2
如何使用jq根据内部数组中的值过滤对象数组?
鉴于此输入: [ { "Id": "cb94e7a42732b598ad18a8f27454a886c1aa8bbba6167646d8f064cd86191e2b", "Names": [ "condescending_jones", "loving_hoover" ] }, { "Id": "186db739b7509eb0114a09e14bcd16bf637019860d23c4fc20e98cbe068b55aa", "Names": [ "foo_data" ] }, { "Id": "a4b7e6f5752d8dcb906a5901f7ab82e403b9dff4eaaeebea767a04bac4aada19", "Names": [ "jovial_wozniak" ] }, { "Id": "76b71c496556912012c20dc3cbd37a54a1f05bffad3d5e92466900a003fbb623", "Names": [ "bar_data" ] } ] 我正在尝试使用jq构造一个过滤器,该过滤器返回Ids的所有对象,这些s 的内部数组中不包含“数据” Names,并且输出以换行符分隔。对于以上数据,我想要的输出是 cb94e7a42732b598ad18a8f27454a886c1aa8bbba6167646d8f064cd86191e2b a4b7e6f5752d8dcb906a5901f7ab82e403b9dff4eaaeebea767a04bac4aada19 我想我与此有点接近: (. - select(.Names[] contains("data"))) | .[] .Id 但select过滤器不正确,并且无法编译(获取error: …
239 arrays  json  select  jq  negation 

7
使用jq顺序解析和显示json中的多个字段
我有这个杰森 { "users": [ { "first": "Stevie", "last": "Wonder" }, { "first": "Michael", "last": "Jackson" } ] } 我想使用jq顺序显示名字和姓氏。像这样- Stevie Wonder Michael Jackson 这就是我所走的路- jq '.users[].first, .users[].last' 但它显示 "Stevie" "Michael" "Wonder" "Jackson" 请注意以下内容- 我不希望使用双引号。 我不要的回车。 混乱了。我的查询将首先显示所有名字,然后显示所有姓氏。但是,我想要倒数第一。
237 json  jq 

3
使用jq根据对象中变量的值选择对象
我有以下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"),我无法弄清楚如何仅打印某些对象。
236 json  bash  jq 

2
如何在Shell管道中使用`jq`?
我似乎无法jq在Shell管道中表现为“正常”。例如: $ curl -s https://api.github.com/users/octocat/repos | jq | cat 结果jq只是打印出其帮助文本*。如果我尝试将jq的输出重定向到文件,则会发生相同的事情: $ curl -s https://api.github.com/users/octocat/repos | jq > /tmp/stuff.json jq如果确定不是从tty运行它,是否故意救助?如何防止这种行为,以便可以jq在管道中使用? * (我意识到此示例包含对cat的无用用法;仅用于说明目的)
194 shell  pipe  jq 

3
如何使用命令行计算JSON对象中的项目?
我JSON从curl命令中得到这种回复: [ { "cid": 49, "pyn": "yi4", "hans": "亿", "hant": "億", "tid": 68, "l10n": "cent million", "pid": 1, "pos": "num", "pos_txt": "" }, { "cid": 50, "pyn": "yi4", "hans": "亿", "hant": "億", "tid": 69, "l10n": "100 millions", "pid": 1, "pos": "num", "pos_txt": "" } ] 如何2使用Bash或命令行(例如underscore)来计算数组中的项目数(在此)?
178 json  bash  curl  jq 

7
如何使用jq从JSON获取键名
curl http://testhost.test.com:8080/application/app/version | jq '.version' | jq '.[]' 上面的命令仅输出以下值: "madireddy@test.com" "2323" "test" "02-03-2014-13:41" "application" 我如何像下面这样获取键名: email versionID context date versionName
128 json  shell  unix  key  jq 

6
如何使用jq从2个文件合并2个JSON对象?
我在外壳程序脚本中使用jq工具(jq-json-processor)来解析json。 我有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": …
123 json  shell  command-line  jq 

1
JQ:选择多个条件
我有一个json,目前使用select获取仅匹配一个条件的数据,我需要根据更多条件进行过滤。 例如: .[] | select((.processedBarsVolume <= 5) && .processedBars > 0) 我该怎么做?
112 json  jq 

8
将bash变量传递给jq select
我已经编写了一个脚本来从中检索某些值file.json。它的工作原理,如果我提供的价值,以JQ select,但变量似乎并没有工作,没有(或我不知道如何使用它)。 #!/bin/sh #this works *** projectID=$(cat file.json | jq -r '.resource[] | select(.username=="myemail@hotmail.com") | .id') echo "$projectID" EMAILID=myemail@hotmail.com #this does not work *** no value is printed projectID=$(cat file.json | jq -r '.resource[] | select(.username=="$EMAILID") | .id') echo "$projectID"

5
如何使用jq将任意简单的JSON转换为CSV?
使用jq,如何将浅层对象数组的任意JSON编码转换为CSV? 这个网站上有很多关于特定数据模型的问答,这些数据模型对字段进行了硬编码,但是对于任何JSON,此问题的答案都应该有效,唯一的限制是它是具有标量属性的对象数组(无深度/复杂/子对象,如将它们展平是另一个问题)。结果应该包含一个标题行,给出字段名称。将优先考虑保留第一个对象的字段顺序的答案,但这不是必需的。结果可以用双引号将所有单元格括起来,或者仅将需要引用的单元格括起来(例如“ a,b”)。 例子 输入: [ {"code": "NSW", "name": "New South Wales", "level":"state", "country": "AU"}, {"code": "AB", "name": "Alberta", "level":"province", "country": "CA"}, {"code": "ABD", "name": "Aberdeenshire", "level":"council area", "country": "GB"}, {"code": "AK", "name": "Alaska", "level":"state", "country": "US"} ] 可能的输出: code,name,level,country NSW,New South Wales,state,AU AB,Alberta,province,CA ABD,Aberdeenshire,council area,GB AK,Alaska,state,US 可能的输出: "code","name","level","country" "NSW","New …
105 json  csv  jq 

3
如何使用jq更新json文档中的单个值?
如果我忽略了一些很明显的东西,就可以选择应用程序;我刚刚找到了jq并且正在尝试使用它来更新一个JSON值而不影响周围的数据。 我想将curl结果传送到jq,更新值,然后将更新的JSON传送到curl -X PUT。就像是 curl http://example.com/shipping.json | jq '.' field: value | curl -X PUT http://example.com/shipping.json 到目前为止,我已经使用一起破解了它sed,但是在查看了一些|=运算符示例之后,jq我确定我不需要这些。 这是一个JSON示例- 在保留其余JSON的同时,如何使用jqset "local": false? { "shipping": { "local": true, "us": true, "us_rate": { "amount": "0.00", "currency": "USD", "symbol": "$" } } }
103 json  jq 

4
如何在jq中选择多个字段?
我的输入文件如下所示: { "login": "dmaxfield", "id": 7449977, ... } { "login": "dmaxfield", "id": 7449977, ... } 我可以使用以下命令获取所有登录名: cat members | jq '.[].login' 但是我无法破解语法来获取登录名和ID?
102 jq 

2
使用jq解析JSON字符串
我试图jq解析一个JSON结构,如: { "a" : 1, "b" : 2, "c" : "{\"id\":\"9ee ...\",\"parent\":\"abc...\"}\n" } 也就是说,JSON中的元素是带有转义json的字符串。 所以,我有一些类似的东西 $ jq [.c] myFile.json | jq [.id] 但这崩溃了 jq: error: Cannot index string with string 这是因为.c的输出是一个字符串,而不是JSON。如何获得jq解析此字符串? 我最初的解决方案是使用sed将替换所有的逃生字符(\":\",\",\"和\"),但凌乱的,我认为有内置的方式jq做到这一点? 谢谢! 编辑:另外,这里可用的jq版本是: $ jq --version jq version 1.3 我想我可以根据需要更新它。
87 json  string  sed  escaping  jq 

1
jq条件输出
我正在使用jq来播放json。我想知道如何有条件地在其中打印一些内容。 说我对现场电话感兴趣geo。我使用了以下命令,发现只有一个条目geo是null: % cat all.json | jq '.geo != null' | sort | uniq -c 1 false 6891 true 我如何只打印该条目而不打印其他所有内容? print在手册中没有看到类似command的内容。而且这行不通:cat all.json | jq 'if .place == null then . end'。jq抱怨语法错误。
84 json  command-line  jq 

4
如何使用jq将JSON字符串格式化为表?
刚开始使用Bash脚本,偶然发现jq可与JSON一起使用。 我需要将如下所示的JSON字符串转换为表格以在终端中输出。 [{ "name": "George", "id": 12, "email": "george@domain.com" }, { "name": "Jack", "id": 18, "email": "jack@domain.com" }, { "name": "Joe", "id": 19, "email": "joe@domain.com" }] 我要在终端中显示的内容: ID Name ================= 12 George 18 Jack 19 Joe 请注意,我不想显示每一行的email属性,因此jq命令应该涉及一些过滤。下面为我​​提供了一个简单的名称和ID列表: list=$(echo "$data" | jq -r '.[] | .name, .id') printf "$list" 问题在于,我无法将其显示为表格。我知道jq有一些格式化选项,但是不如我使用时的选项好printf。我想我想将这些值存储在一个数组中,然后可以遍历自己进行格式化...?我尝试过的事情给我带来了不同的结果,但从来没有我真正想要的。 有人可以指出我正确的方向吗?
81 json  bash  jq 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.