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

使用BASH将制表符分隔表按列分块

按列拆分制表符分隔文件的解决方案

split命令确实仅支持按行分割,要实现按列拆分的需求,用awk是最直接高效的方案,它能轻松处理从几百列到数万列的大文件场景。

针对100列拆分为5个20列文件的命令

假设原文件名为input.tsv,执行以下命令会生成output_1.tsv到output_5.tsv五个文件,每个文件包含100行、每行20列:

awk -F '\t' '{
    for (i=1; i<=NF; i+=20) {
        out_file = "output_" int(i/20 + 1) ".tsv"
        curr_line = ""
        for (j=i; j<i+20 && j<=NF; j++) {
            curr_line = curr_line (j>i ? "\t" : "") $j
        }
        print curr_line > out_file
    }
}' input.tsv

扩展到60000列拆分为60个1000列文件的命令

只需调整块大小参数,就能适配大规模列拆分场景:

awk -F '\t' '{
    block_size = 1000
    for (i=1; i<=NF; i+=block_size) {
        out_file = "output_" int(i/block_size + 1) ".tsv"
        curr_line = ""
        for (j=i; j<i+block_size && j<=NF; j++) {
            curr_line = curr_line (j>i ? "\t" : "") $j
        }
        print curr_line > out_file
    }
}' input.tsv

关键说明

  • -F '\t':指定输入文件的分隔符为制表符
  • NF:awk内置变量,表示当前行的总列数
  • 外层循环按指定的块大小遍历列,计算输出文件名
  • 内层循环拼接当前块的所有列,确保行内仍以制表符分隔
  • 即使最后一块的列数不足指定大小,脚本也会自动处理剩余列,不会丢失数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:05:25