awk命令在Windows上合并大型CSV文件时不会停止



我正在Windows 10上执行以下awk命令。

awk "(NR == 1) || (FNR > 1)" *.csv > bigMergeFile.csv

我想把所有的csv文件合并成一个名为bigMergeFile.csv的文件,只使用第一个文件的头文件

我成功地在小文件上测试了代码(4个文件,每个文件包含5个cols和4行)。但是,当我在大文件(10个文件,每个文件有8k行,32k色,大小约为1gb)上运行时,代码不会停止。它只在硬盘空间用完时停止执行。此时,生成的输出文件bigMergeFile.csv的大小为30GB。所有输入的csv文件大小为9.5 GB。

我已经在Mac OS上测试了代码,它工作得很好。

我的猜测:bigMergeFile.csv以。csv结尾,所以它是你的脚本运行的输入文件之一,它随着你的脚本追加到它而增长。就像你写了一个循环:

while ! end-of-file do
read line from start of file
write line to end of file
done

因为你基本上是在做一个concat而不是合并,设置FS = "^$"这样就不会浪费时间去分割你不需要的字段了。

最新更新