0

假设我想处理largedata.xzwith的所有行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 工具覆盖。

4

1 回答 1

0

原来 split 本身处理这个:

xz -dc mediumdata.xz | split --lines=1000000 --filter='prog1 >summary.$FILE' -

有一个例子info split

于 2015-09-22T08:51:26.653 回答