awk 'NR==1 {n=$2}
{
file = sprintf("file.%.4d", ($2-n)/10000)
if (file != last_file) {
close(last_file)
last_file = file
}
print > file
}'
Escrevia para file.0000
, file.0001
... (o número sendo int(($2-n)/10000)
, em que n
é $2
para a primeira linha).
Note que fechamos os arquivos depois que paramos de escrever para eles, caso contrário, você alcançaria o limite do número de arquivos simultaneamente abertos após algumas centenas de arquivos (o GNU awk
pode contornar esse limite, mas as performances degradam rapidamente).
Estamos assumindo que esses números estão sempre aumentando.