假设我想处理largedata.xz
with的所有行prog1
,并且prog1
在不耗尽 RAM 的情况下运行所有这些行时遇到了一些麻烦。但是,并不真的需要它在所有数据上运行,我可以在每百万行输入上运行它,给我几个摘要(prog1
每百万行重新启动)。
直到现在我一直在做
$ xz -dc middlingdata.xz | while read -r; do
lines="${lines}"$'\n'"${REPLY}";
(( i++ ))
if [[ $i -gt 1000000 ]]; then
i=0
echo "${lines}"|prog1 >$i.out
lines=""
fi
done
避免首先做split
并获得一堆中间输入文件,但感觉这个用例应该由一些标准的 Unix 工具覆盖。