我有许多以下格式的文件(它们都包含标题并且具有相同数量的列):
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