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

如何用Linux标准命令行工具交替合并两个TSV文件列?

用Linux命令行实现TSV文件列交替合并

没问题,这个需求用awk就能轻松搞定,一行命令就能完成两个TSV文件的列交替合并,完全符合你的要求!

具体命令

假设你的两个文件分别叫file1.tsv和file2.tsv,执行下面的命令就能得到合并后的merged.tsv:

awk -F'\t' -v OFS='\t' 'NR==FNR {lines[NR]=$0; next} {
    split(lines[NR], a, "\t")
    split($0, b, "\t")
    for(i=1; i<=240; i++) {
        res = res (res ? OFS : "") a[i] OFS b[i]
    }
    print res
    res = ""
}' file1.tsv file2.tsv > merged.tsv

命令解释

我给你拆解一下这个命令的逻辑,方便你理解和调整:

  • -F'\t':指定输入的字段分隔符是制表符,完美匹配TSV格式
  • -v OFS='\t':设置输出的字段分隔符也是制表符,保证输出文件依然是标准TSV
  • NR==FNR {lines[NR]=$0; next}:当处理第一个文件(file1.tsv)时,把每一行的内容存到数组lines里,用行号作为索引,然后直接跳到下一行,不执行后面的逻辑
  • 处理第二个文件(file2.tsv)时:
    1. 把file1对应行的内容拆分成数组a,当前行拆分成数组b
    2. 循环240次(因为你明确说每个文件是240列),每次把file1的第i列和file2的第i列交替拼接到结果字符串里
    3. 打印拼接好的整行,然后清空结果字符串处理下一行

这个命令会严格按照行对应,把两个文件的列一一交替排列,最终得到480列、100行的合并文件。如果两个文件行数不一致,命令会自动以较短的文件行数为准哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:28:05