如何将多个相同格式的文件合并为一个文件?

如何将多个相同格式的文件合并为一个文件?

我有许多以下格式的文件(它们都包含标题并且具有相同数量的列):

col1,col2,tt2,mm3
123,292810,1501223371-7504710,yes
1234,286130,1501223549-101722650,yes
334,276300,1501223650-71196600,yes
445,290100,1501224239-87923810,yes

每个文件的行数不同,但总是很小(大约 20-40 行)。所有文件都位于同一目录中。

我想将所有这些文件合并为一个文件,而不重复标题。如何使用 bash 脚本来实现?

答案1

您可以使用awk来连接文件,跳过每个文件的第一行,除非它是所有文件的第一行。

例如,如果文件part-00000通过part-00199以下方式命名:

awk 'FNR==1 && NR!=1 {next} {print}' part-{00000..00199}

答案2

我会从其中一个文件中抓取标题,然后从所有文件中抓取从第 2 行开始的所有内容。

head -1 part-00000 > output.csv
tail -n +2 part-* >> output.csv

答案3

其他解决方案的一个简单替代方法是使用cat 如下grep方法:

cat * | grep -v '^col1,col2' > newfile

相关内容