gpt4 book ai didi

json - 如何使用 jq 将 JSON 字符串格式化为表格?

转载 作者:IT老高 更新时间:2023-10-28 12:46:24 25 4
gpt4 key购买 nike

刚开始使用 Bash 脚本,偶然发现 jq 可以使用 JSON。

我需要将如下所示的 JSON 字符串转换为表格以便在终端中输出。

[{
"name": "George",
"id": 12,
"email": "george@domain.example"
}, {
"name": "Jack",
"id": 18,
"email": "jack@domain.example"
}, {
"name": "Joe",
"id": 19,
"email": "joe@domain.example"
}]

我想在终端中显示的内容:

ID        Name
=================
12 George
18 Jack
19 Joe

注意我不想显示每一行的 email 属性,所以 jq 命令应该包含一些过滤。以下为我提供了一个简单的名称和 ID 列表:

list=$(echo "$data" | jq -r '.[] | .name, .id')
printf "$list"

问题是,我不能像表格一样显示它。我知道 jq 有一些格式化选项,但不如我使用 printf 时的选项好。我想我想在一个数组中获取这些值,然后我可以循环自己进行格式化......?我尝试过的事情给了我不同的结果,但从来都不是我真正想要的。

有人能指出正确的方向吗?

最佳答案

使用 @tsv 过滤器有很多值得推荐的地方,主要是因为它以标准方式处理大量“边缘情况”:

.[] | [.id, .name] | @tsv

可以像这样添加标题:

jq -r '["ID","NAME"], ["--","------"], (.[] | [.id, .name]) | @tsv'

结果:

ID  NAME
-- ------
12 George
18 Jack
19 Joe

长度*"-"

要自动生成虚线:

jq -r '(["ID","NAME"] | (., map(length*"-"))), (.[] | [.id, .name]) | @tsv'

关于json - 如何使用 jq 将 JSON 字符串格式化为表格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39139107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com