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 split
me 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_name
saldrá
xaa
con 300k líneas yxab
con 100k líneas, para una entrada con 400k líneas.fuente
tail -n +L file_name > bottom_file
cuando simplementeL=K+1
sin necesidad de ejecutarwc
primerosed -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.