如何使用jq按region字段包含条件筛选ip_prefix并输出CSV
问题解决:筛选region含
us-west-的ip_prefix并输出CSV 原命令错误原因
你之前的命令先把每个prefixes对象的ip_prefix和region拆成了两个独立的输出值,再对所有值做contains("us")匹配,自然只会输出命中的region字段,和预期的「先筛选符合条件的条目、再提取对应字段」逻辑完全相反。
正确命令
输出纯文本每行一个IP段(无额外引号)
jq -r '.prefixes[] | select(.region | contains("us-west-")) | .ip_prefix' file.json
针对你给出的示例JSON,执行后输出为:
52.93.178.234/32
输出标准CSV格式(支持多字段扩展)
如果需要生成合规CSV,后续可扩展添加region等字段:
# 仅输出ip_prefix列,自带表头 jq -r '["ip_prefix"], (.prefixes[] | select(.region | contains("us-west-")) | [.ip_prefix]) | @csv' file.json
执行后输出带表头的CSV内容:
"ip_prefix" "52.93.178.234/32"
命令参数说明
-r:输出原始字符串,避免jq默认给结果加JSON转义引号- 执行顺序:先遍历所有prefixes条目→筛选region符合要求的条目→提取目标字段→格式化输出
内容的提问来源于stack exchange,提问作者Tom Donnly
相关产品推荐
相关产品推荐

