Bash或KSH使用标头连接多个分隔文件

时间:2015-12-07 14:26:45

标签: bash file concatenation

我有几十个文件,都是.dat格式并包含标题。

我想要做的是将所有文件连接到位于同一目录中的名为merged-date.dat的单个文件中。这很容易,但问题在于所有文件都有标题行。因此,对于除第一个之外的任何文件,我想在concat过程中消除该标题行(也就是第一行),因此我没有包含标题的多个记录。有人有主意吗?提前感谢您的回答!

1 个答案:

答案 0 :(得分:0)

您可以使用tail -n+2 file获取没有第一行的文件。因此,您可以按原样复制第一个文件,并将所有剩余文件合并到一个循环中。

cp file1.dat concat.dat
for file in remaining files; do
    tail -n+2 $file >> concat.dat
done

上述代码的循环标头是伪代码。

如果remaining files与所有文件相比难以计算,或者您只需将标题添加到新文件中,然后合并所有其他文件。

head -n1 file1.dat > concat.dat
for file in /folder/to/files/*; do
    tail -n+2 $file >> concat.dat
done