You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用awk转置表格格式?将cURL获取的REST API输出转为指定表格

解决思路与实现方法

以下是几种在终端环境下将API返回的键值对格式转换为对齐表格的实用方法:

方法1:使用awk(推荐,轻量高效)

awk是处理结构化文本的利器,可直接提取所需字段并格式化输出:

curl "你的API地址" | awk '
BEGIN { print "groupId   groupPath" }
/^OK:/ { next }  # 跳过开头的OK行
/^groupId:/ { id = substr($0, 10) }  # 提取groupId值
/^groupPath:/ { 
    path = substr($0, 12) 
    printf "%-8s %s\n", id, path  # 左对齐id列,宽度8
    id = ""  # 重置变量,准备下一组数据
}
'

说明:

  • BEGIN块在处理文本前先打印表头
  • substr($0, 10) 从第10个字符开始截取(跳过"groupId: ")
  • %-8s 确保groupId列占8个字符宽度,左对齐,和表头的"groupId "(8个字符)匹配

方法2:sed + paste + column 组合

利用文本替换和列对齐工具快速处理:

curl "你的API地址" | 
sed '/^OK:/d' |  # 删除开头的OK行
paste - - |  # 将每两行合并为一行(用制表符分隔)
sed 's/groupId: //; s/\tgroupPath: /\t/' |  # 移除键名,保留值
column -t -s $'\t'  # 按制表符分隔对齐列

说明:

  • paste - - 把相邻两行合并,适合这种成对出现的键值对
  • column -t 自动根据内容宽度对齐所有列

方法3:Python脚本(适合复杂场景扩展)

如果需要更灵活的处理逻辑,用Python脚本实现:

curl "你的API地址" | python3 -c "
import sys
# 过滤空行和OK行,提取有效内容
lines = [line.strip() for line in sys.stdin if line.strip() and not line.startswith('OK:')]
# 按每两行一组提取数据
group_data = [(lines[i].split(': ')[1], lines[i+1].split(': ')[1]) for i in range(0, len(lines), 2)]
# 输出表头和格式化内容
print('groupId   groupPath')
for gid, gpath in group_data:
    print(f'{gid:<8} {gpath}')
"

说明:

  • split(': ')[1] 直接分割键值对,提取对应的值
  • f'{gid:<8}' 用f-string实现左对齐,确保列宽一致

内容的提问来源于stack exchange,提问作者Nagu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:09:30