JQ嵌套哈希条件选择:指定语言筛选状态为spoken/perhaps的城市名
jq 实现指定语言筛选对应城市方案
核心命令(纯jq实现,无外部依赖)
# 把命令中的 $目标语言 替换为你要查询的语言代码即可,比如 en、fr、ru jq -r --arg lang "$目标语言" '[to_entries[] | select(.value.language[$lang] == ("spoken", "perhaps")) | .key] | join(", ")'
命令拆解说明
--arg lang "$目标语言":将需要查询的语言代码作为变量传入jq运行环境to_entries:将外层以城市名为key的嵌套哈希,转换为包含key(城市名)、value(城市对应属性)的对象数组select(.value.language[$lang] == ("spoken", "perhaps")):过滤条件,仅保留指定语言状态为spoken或者perhaps的条目[... | .key] | join(", "):把符合条件的城市名收集为数组,再拼接为逗号分隔的字符串,和示例输出格式对齐
测试示例
- 输入语言为
en时,执行对应命令
输出:Paris, London, Moscow - 输入语言为
fr时,执行对应命令
输出:Paris, London - 输入语言为
ru时,执行对应命令
输出:Moscow
内容的提问来源于stack exchange,提问作者Ege
相关产品推荐
相关产品推荐

