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

如何将带相同前缀的单列schema.table数据转为多列多行制表符分隔格式?

解决方法

可以用awk命令快速处理这类按组列对齐的需求,以下是具体实现:

假设你的输入文件名为input.txt,要输出到output.txt,执行以下命令:

awk -F'.' '{
    # 记录schema首次出现的顺序
    if (!seen[$1]++) schemas[++schema_cnt] = $1
    # 把每个schema下的表按顺序存入二维数组
    arr[$1][++cnt[$1]] = $0
    # 记录拥有最多表的schema的表数量
    if (cnt[$1] > max_len) max_len = cnt[$1]
}
END {
    # 按行遍历,拼接每个schema的对应位置表名
    for (i=1; i<=max_len; i++) {
        line = ""
        for (j=1; j<=schema_cnt; j++) {
            s = schemas[j]
            if (line != "") line = line "\t"
            # 存在对应表则添加,否则留空
            line = line (arr[s][i] ? arr[s][i] : "")
        }
        print line
    }
}' input.txt > output.txt

命令逻辑说明:

  • 以.为分隔符拆分每行的schema和表名
  • 用数组schemas记录输入中schema首次出现的顺序,避免输出列顺序混乱
  • 二维数组arr[schema][序号]存储每个schema下的第N个表
  • 循环遍历到最长的表数量,逐行拼接每个schema的对应表项,用制表符分隔
  • 没有对应表项的位置会留空,保证列对齐

执行后,output.txt就是你需要的制表符分隔格式文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:45:36