awk是否将输出文件存储在RAM中?

时间:2014-07-03 13:58:39

标签: memory awk

我正在进行像awk '{print $3 > "file1.txt"}'

这样的简单解析

我注意到awk占用了太多RAM(文件很大)。流awk输出到文件消耗内存吗?这是否像流写一样工作,或文件是否保持打开状态直到程序终止?

我给出的确切命令是:

for i in ../../*.txt; do j=${i#*/}; mawk -v f=${j%.txt} '{if(NR%8<=4 && NR%8!=0){print >f"_1.txt" } else{print >f"_2.txt"}}' $i & done

很明显,我使用了mawk。五个输入文件各约为6GB,当我运行top时,我看到22%的内存〜每个mawk进程在其峰值处占用5GB。我注意到它是因为我的系统由于内存不足而挂起。

我特别确定awk外部的重定向消耗的内存可以忽略不计。用比这个大得多的文件和比这更复杂的操作完成了几次;我从未遇到过这个问题。由于我必须将输入文件的不同部分复制到不同的输出文件,因此我在awk中使用了重定向。

我知道还有其他方法可以实现这项任务,无论如何我的工作都没有太多问题。我感兴趣的是写入文件时awk的工作原理。

我不确定这个问题是否更适合超级用户。

0 个答案:

没有答案