OCI CLI使用--output table参数时出现Parse error问题咨询
问题原因
OCI CLI的--output table参数输出的是纯文本表格格式,而非默认的JSON结构,而jq工具仅支持解析JSON格式输入,因此传入表格文本会直接触发解析错误,该问题和配置遗漏无关,属于用法逻辑不匹配。
两种输出格式的区别
- 未加
--output参数时,OCI CLI默认返回标准JSON结构,包含完整的.data等层级字段,符合jq的解析要求 - 加了
--output table后返回内容是带表头、分隔线的人类可读文本,无JSON键值对结构,jq无法识别对应字段
解决方案
根据你的使用场景选对应方案即可:
- 仅需提取会话ID:直接使用你原本可以正常运行的命令即可,默认JSON输出是程序二次处理的最优格式
- 需要同时查看表格展示和提取ID:可以先将JSON结果落地到临时文件,分开处理两种输出需求:
# 存储原始JSON结果 oci --profile $PROF bastion session list --all --bastion-id $BSTN_OCID > session_tmp.json # 查看表格格式结果 cat session_tmp.json | oci output table # 提取会话ID cat session_tmp.json | jq -r '.data[].id'
- 需要提取后的ID以表格形式展示:先通过jq提取字段,再通过系统工具转表格即可,不要给OCI加
--output table参数:
oci --profile $PROF bastion session list --all --bastion-id $BSTN_OCID | jq -r '["会话ID"], ["------"], (.data[].id)' | column -t
内容的提问来源于stack exchange,提问作者Safney
相关产品推荐
相关产品推荐

