Quiero dividir un archivo de registro de 400k líneas de un número de línea en particular.
Para esta pregunta, hagamos de este un número arbitrario de 300k.
¿Existe un comando de Linux que me permita hacer esto ( dentro del script )?
Sé que splitme permite dividir el archivo en partes iguales, ya sea por tamaño o por números de línea, pero eso no es lo que quiero. Quiero los primeros 300k en un archivo y los últimos 100k en el segundo archivo.
Cualquier ayuda sería apreciada. ¡Gracias!
Pensándolo bien, esto sería más adecuado para el superusuario o el sitio predeterminado del servidor.
linux
shell
split
filesplitting
desnormalizador
fuente
fuente

Respuestas:
Además, pensándolo bien, la división funcionará en su caso, ya que la primera división es más grande que la segunda. Split coloca el saldo de la entrada en la última división, por lo que
split -l 300000 file_namesaldrá
xaacon 300k líneas yxabcon 100k líneas, para una entrada con 400k líneas.fuente
tail -n +L file_name > bottom_filecuando simplementeL=K+1sin necesidad de ejecutarwcprimerosed -n '1,1000p' test.log > top_test.log ; sed '1,1000d' test.log > bottom_test.log. IHMO, esto es más sencillo y no requiere calcular el número total de líneas. Además, todavía funciona si se agregaron líneas entre la ejecución de cada comando.