jq:连接数据集中的两个值

时间:2019-07-13 04:15:57

标签: json concatenation jq

我已经花了大约一个小时来弄弄这个,而且我对jqjson来说还很陌生。我来自系统背景,并且具有相当不错的bash脚本编写技能,但是这些jq的东西确实让我很难受。

示例json的输出:

{
  "id": 2,
  "name": "Cluster B"
}
{
  "id": 1,
  "name": "Cluster A"
}

所需的输出:

"1:Cluster A"
"2:Cluster B"

有人知道该怎么做吗?

1 个答案:

答案 0 :(得分:1)

您可以在调用jq之后进行排序,但是一种无需任何后处理的排序方法是将-s命令行选项与以下过滤器配合使用:

sort_by(.id)[]
| "\(.id): \(.name)"

在这里使用字符串插值避免了将.id明确转换为字符串的情况。

变量

如果输入文件比预期的输出大得多,建议避免使用-s选项,而建议使用inputs和-n命令行选项。例如:

[inputs | (.id|tostring) + ":" + (.name|tostring)] | sort[]