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

使用AWK拆分带表头的制表符文件并为每个子文件保留表头

按列拆分TSV文件并保留表头的解决方案

这问题我处理TSV数据时也碰到过,只需要给你的awk命令加一点表头处理逻辑就行,直接用下面的命令:

awk -F'\t' 'NR==1{header=$0; next} !seen[$1]++{print header > $1} {print > $1}' file.tab

我给你拆解下每个部分的作用,方便理解和调整:

  • -F'\t':明确指定字段分隔符为制表符,完美适配你的TSV文件格式
  • NR==1{header=$0; next}:处理到文件第一行(表头行)时,把整行内容存到header变量里,再用next跳过后续逻辑,避免把表头当成普通数据行处理
  • !seen[$1]++{print header > $1}:用seen数组记录第一列的每个值是否已处理过。第一次遇到某个第一列值时,!seen[$1]为真,就把保存的表头写入对应文件;之后再遇到相同值时,这个判断为假,不会重复写入表头
  • {print > $1}:把当前数据行写入以第一列值命名的文件中

这个命令会自动为第一列的每个唯一值生成对应文件,每个文件都包含原文件的表头,后面跟着属于该样本的所有数据行。如果你的第一列值包含空格、特殊符号这类可能影响文件名的字符,可能需要额外处理,但常规样本名称都能直接用这个命令搞定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:44:23