所以,我有一个应用程序。它不是我写的。它是一个命令行应用程序。它输出一些我能够写入文件的字符串,如:
BoundingRectangle
问题是输出太大而计算机内存不足。有可能做这样的事情:
anApp -input myFile.txt > myFileOutput.txt
因为它是一个笨拙的伪代码,我也在补充说明:
我认为可能还有另一种选择 - 保持anApp -input myFile.txt > i=0; for each 100000 lines; touch newFile%d $(i++); $cat 100000lines >> newFile%d $(i++); done
的输出为现金。但是,文件很大,它包含一些结果,如果它会丢失......这不是我想要发生的事情。
答案 0 :(得分:1)
一种选择是使用split
:
anApp -input myFile.txt | split -l 100000 - myFileOutput
这将生成名称为myFileOutputaa
,myFileOutputab
等
要更好地控制输出文件的名称,可以使用awk:
NR % 100000 == 1 { close(outfile); outfile = sprintf("myFileOutput%02d", i++) }
{ print > outfile }
您可以将该脚本保存到文件中并按以下方式运行:
anApp -input myFile.txt | awk -f script.awk