如何更有效地将文件切成碎片?

Jac*_*kWM 4 script bash shell file-io

假设我有一个 10MB 的文本文件foo.txt,它有 100,000 行。现在,我想foo.txt逐个窗口处理,窗口大小为 10。

我目前的脚本是这样的:

for ((i=0;i<$lines;i=i+$step))
do    
    head -$((i+step)) $1 | tail -$step > tmp1
    head -$((i+step)) $2 | tail -$step > tmp2
    setstr=$setstr' '`./accuracy.sh tmp1 tmp2`
done
echo $setstr | awk '{for (i=1;i<=NF;i++) sum+=$i; }END{print sum/NF}'
Run Code Online (Sandbox Code Playgroud)

但它运行缓慢。有什么简单有效的方法可以做到这一点吗?

小智 5

你可以这样做split

以下是如何使用它的示例:

split -l 10 input_file output_file_prefix_
Run Code Online (Sandbox Code Playgroud)

-l选项代表--lines=

这将分成input_file多个块,每块 10 行,分成这些文件:

output_file_prefix_aa
output_file_prefix_ab
output_file_prefix_ac
...
Run Code Online (Sandbox Code Playgroud)

等等。

有关您可以使用的其他方式split,请参阅man split此处