如何将AWS CLI获取的S3桶加密结果格式化为可读表格?
如何将S3桶SSE检查输出格式化为表格
方案:修改原有循环命令,生成结构化表格输出
你需要调整原循环的输出逻辑,通过补充表头、统一字段格式、处理异常情况,直接生成可读性强的表格(支持Markdown或终端纯文本格式)。
1. 生成Markdown表格(可直接用于文档/笔记)
将你的循环替换为以下命令(假设${i}来自S3桶列表遍历,比如aws s3 ls的结果):
# 输出Markdown表格表头 echo "| 桶名 | SSE加密算法 |" echo "|------|-------------|" # 遍历所有S3桶 for i in $(aws s3 ls | awk '{print $3}'); do # 获取SSE算法,同时处理无加密配置的报错和空值 sse_alg=$(aws s3api get-bucket-encryption --bucket ${i} 2>/dev/null | jq -r '.ServerSideEncryptionConfiguration.Rules[0].ApplyServerSideEncryptionByDefault.SSEAlgorithm // "未启用SSE"') # 输出表格行 echo "| ${i} | ${sse_alg} |" done
2. 关键修改说明
- 新增表头定义,明确表格列含义
- 用
2>/dev/null捕获get-bucket-encryption的错误输出(比如桶未配置加密时的报错),避免干扰表格结构 - 用jq的
//运算符设置默认值未启用SSE,统一处理无加密配置的桶 - 将原有的分散输出整合成标准表格行格式
3. 终端纯文本表格(适合CLI直接阅读)
如果只需要在终端看整齐的表格,可借助column命令实现自动对齐:
( # 输出分隔符格式的表头 echo "桶名,SSE加密算法" # 遍历桶列表并输出字段 for i in $(aws s3 ls | awk '{print $3}'); do sse_alg=$(aws s3api get-bucket-encryption --bucket ${i} 2>/dev/null | jq -r '.ServerSideEncryptionConfiguration.Rules[0].ApplyServerSideEncryptionByDefault.SSEAlgorithm // "未启用SSE"') echo "${i},${sse_alg}" done ) | column -s, -t
这个命令会以逗号为分隔符,自动对齐所有字段,生成终端友好的纯文本表格。
内容的提问来源于stack exchange,提问作者Colin Jack
相关产品推荐
相关产品推荐

