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

如何用awk或Shell脚本合并制表符分隔文件并排除次文件表头

用awk或Shell脚本合并两个同结构制表符文件的解决方案

这需求用awk或者简单的Shell组合命令就能轻松搞定,完全不用复杂的脚本,下面给你两种靠谱的方法:

方法一:用awk处理(推荐,适合复杂场景或大文件)

直接一行命令搞定,逻辑清晰还高效:

awk 'NR == FNR {print; next} FNR > 1' file.1.txt file.2.txt > merged.txt

命令解释:

  • NR == FNR:NR是awk当前处理的总行数,FNR是当前处理的当前文件内的行号。当处理第一个文件file.1.txt时,这两个值相等,所以执行print输出每一行,然后next跳过后续逻辑,确保第一个文件的所有行(包括表头)都被完整输出。
  • FNR > 1:当处理第二个文件file.2.txt时,只输出行号大于1的内容——也就是跳过它的表头行,只保留数据行。
  • 最后把结果重定向到merged.txt,就是你要的合并文件。

方法二:用Shell基础命令组合(更简洁,适合简单场景)

如果不想用awk,用cat和tail的组合也能快速实现:

cat file.1.txt <(tail -n +2 file.2.txt) > merged.txt

命令解释:

  • cat file.1.txt:先完整输出第一个文件的所有内容(包括表头)。
  • <(tail -n +2 file.2.txt):用进程替换的方式,输出file.2.txt从第2行开始的所有内容(跳过表头)。
  • 两者的输出合并后重定向到merged.txt,效果和awk方法完全一致。

额外验证小技巧

合并后可以验证所有行的列数是否都是168(确保格式没出问题):

awk -F'\t' '{print NF}' merged.txt | sort -u

如果输出只有168,说明所有行的列数都符合要求,没问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:22:56