Divida el archivo en varios archivos pequeños, separados por el símbolo de nueva línea

Divida el archivo en varios archivos pequeños, separados por el símbolo de nueva línea

¿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, bbbY cccc(en 3 archivos diferentes)

Ya verifiqué el splitcomando, 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, splitse divide por línea si usas -lel 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 .txtextensión). Pero tenga en cuenta que cuando se alcance el límite de archivos abiertos simultáneos, algunas awkimplementaciones 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"

información relacionada