¿Existe alguna utilidad que divida el archivo mediante un símbolo de nueva línea? por ejemplo, si un archivo contiene las siguientes líneas,
aa
bbb
cccc
Si quiero dividirlo en 3 archivos, el resultado deseado sería:
aa
, bbb
Y cccc
(en 3 archivos diferentes)
Ya verifiqué el split
comando, solo corta el archivo por tamaños, no por el tamaño que quiero.
Si no escribí una utilidad yo mismo, ¿hay alguna herramienta estándar que pueda usar?
Respuesta1
A menos que me falte algo, split
se divide por línea si usas -l
el interruptor:
-l, --lines=NUMBER
put NUMBER lines per output file
entonces
split -l 1 inputfile
deberías hacer lo que quieras.
Respuesta2
awk '{print > $0".txt" }' inputfile
crearía un archivo por línea única en el archivo de entrada con el nombre del contenido de esas líneas (con una .txt
extensión). Pero tenga en cuenta que cuando se alcance el límite de archivos abiertos simultáneos, algunas awk
implementaciones fallarán.
O
awk '{f = "output_file." NR; print $0 > f; close(f)}' inputfile
Tener archivos de salida numerados.
Respuesta3
A=0
while IFS= read -r LINE ; do
printf '%s\n' "$LINE" > newfile$A
(( A++ ))
done < "$INPUTFILE"