arrays - jq 一起显示键名和它们的子元素长度
问题描述
我想显示任意对象的键名及其组成部分的长度。我认为我的问题似乎是“长度”需要一个过滤器,它会静音其他输出。
鉴于 foo.json 包含:
{
"lol": 1,
"wtf": [1, 2, 3, 4],
"bbq": {
"omg": "yes",
"afk": "always"
}
}
我可以:
cat foo.json |jq 'keys'
[
"bbq",
"lol",
"wtf"
]
我可以:
cat foo.json |jq '.[] |length'
1
4
2
但是我如何让两者都在同一条线上(或者我什至会接受交替)?
"bbq" 2
"lol" 1
"wtf" 4
解决方案
假设您希望每个键的长度在同一行上,您可以使用以下内容:
jq -r 'keys_unsorted[] as $k | [$k, (.[$k]|length)] | join(" ")'
如果要引用键名,请使用过滤器:
keys_unsorted[] as $k | "\"\($k)\" \(.[$k]|length)"
推荐阅读
- google-sheets - 使用自动填充数组公式进行关键字搜索
- javascript - 更新 Vuex 状态时不显示 V-snackbar
- python - 美丽的汤玻璃门页
- python - 用户警告:从版本 2.2.1 开始,macOS 分发轮中的库文件由 Apple Clang (Xcode_8.3.3) 编译器构建
- python - NameError:名称“计数”未定义
- javascript - Javascript 如何从 CLI 发出噪音
- docker - 在 Docker 场景中将 `/var/run/docker.sock` 挂载到 Docker 中的结果是什么?
- java - 按钮不在我告诉他们的地方
- python - 带有 Django 的 Python API
- xamarin.forms - 来自 URL 的 Skiasharp 贷款图像并在 Xamarin 表单中的 Canvas 上绘制