Linux命令行table格式的输出转json通用函数12345678910111213141516171819202122232425262728293031323334353637383940414243444546# 将命令输出转换为JSON格式command_output_to_json() { local cmd="$*" local json json=$(eval "$cmd" | column -t | awk -F ' +' ' NR==1 { n=NF for(i=1;i<=NF;i++) header[i]=$i next } BEGIN { FPAT = "([^ ]+)|(\\([^)]+\\))"; } # 定义字段模式:非空格内容或括号内容 NF>0 { row="{" for(i=1;i<=n;i++) { val=$i # 1. 先移除首尾空格 gsub(/^[ \t]+|[ \t]+$/, "", val) # 2. 合并中间多个空格为一个空格 gsub(/[ \t]+/, " ", val) # 3. 处理特殊字符转义 gsub(/\\/,"\\\\",val) gsub(/"/,"\\\"",val) row=row sprintf("\"%s\":\"%s\"", header[i], val) (i<n?",":"") } row=row "}" rows[++rowCount]=row } END { printf "[" for(i=1;i<=rowCount;i++) { printf "%s", rows[i] if(i<rowCount) printf "," } printf "]" } ') echo -n "$json"} 使用示例1command_output_to_json " docker images"