为什么不这样:
echo '[{ "name": "George", "id": 12, "email": "george@domain.com"}, { "name": "Jack", "id": 18, "email": "jack@domain.com"}, { "name": "Joe", "id": 19, "email": "joe@domain.com"}]' | jq -r '.[] | "(.id)t(.name)"'输出量
12 George18 Jack19 Joe
编辑1: 对于细粒度的格式化,请使用以下工具
awk
echo '[{ "name": "George", "id": 12, "email": "george@domain.com"}, { "name": "Jack", "id": 18, "email": "jack@domain.com"}, { "name": "Joe", "id": 19, "email": "joe@domain.com"}]' | jq -r '.[] | [.id, .name] | @csv' | awk -v FS="," 'BEGIN{print "IDtName";print "============"}{printf "%st%s%s",$1,$2,ORS}'ID Name============12 "George"18 "Jack"19 "Joe"编辑2: 回复
无法从jq直接获取包含数组的变量吗?
为什么不?
涉及到一个示例(实际上是从您的示例修改而来的),其中将电子邮件更改为数组说明了这一点
echo '[{ "name": "George", "id": 20, "email": [ "george@domain1.com" , "george@domain2.com" ]}, { "name": "Jack", "id": 18, "email": [ "jack@domain3.com" , "jack@domain5.com" ]}, { "name": "Joe", "id": 19, "email": [ "joe@domain.com" ]}]' | jq -r '.[] | .email'输出量
[ "george@domain1.com", "george@domain2.com"][ "jack@domain3.com", "jack@domain5.com"][ "joe@domain.com"]



