刚刚开始使用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"
}]
Run Code Online (Sandbox Code Playgroud)
我要在终端显示的内容:
ID Name
=================
12 George
18 Jack
19 Joe
Run Code Online (Sandbox Code Playgroud)
请注意我不想显示每行的email属性,因此jq命令应该包含一些过滤.以下给出了一个名称和id的简单列表:
list=$(echo "$data" | jq -r '.[] | .name, .id')
printf "$list"
Run Code Online (Sandbox Code Playgroud)
问题是,我不能像桌子一样显示它.我知道jq有一些格式化选项,但不如我使用时的选项差不多printf.我想我想在一个数组中得到这些值,然后我可以循环自己进行格式化......?我尝试的东西给了我不同的结果,但从来没有我真正想要的.
有人能指出我正确的方向吗?