updivx/otros-scripts/shard.lua

31 lines
624 B
Lua

local stdin = io.open("/dev/stdin")
local list = stdin:read("*a")
stdin:close()
local lineas = 0
-- Pass 1: contar lineas
for line in (list):gmatch('[^\r\n]+') do
lineas = lineas + 1
end
local cantidad_de_listas = tonumber(arg[1])
local cada_lista = lineas / cantidad_de_listas
local listas = {}
for i = 1,cantidad_de_listas do
listas[i] = io.open("TMP-lista-shard-"..i, "w")
end
local index = 1
-- Pass 2: hacer listas
for line in (list):gmatch('[^\r\n]+') do
local lista = listas[math.ceil(index / cada_lista)]
lista:write(line,"\n")
index = index + 1
end
for _, lista in ipairs(listas) do
lista:close()
end