varios varias unir txt por partir partes lineas ficheros dividir concatenar comando archivos archivo linux shell split filesplitting

linux - varias - split unix



Cómo dividir archivos en un número de línea (1)

Quiero dividir un archivo de registro de 400k de largo desde un número de línea particular.

Para esta pregunta, hagamos de esto un número arbitrario de 300k.

¿Hay algún comando de Linux que me permita hacer esto ( dentro del script )?

Sé que dividirme me permite dividir el archivo en partes iguales, ya sea por tamaño o 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 sitio del superusuario o del servidor.


file_name=test.log # set first K lines: K=1000 # line count (N): N=$(wc -l < $file_name) # length of the bottom file: L=$(( $N - $K )) # create the top of file: head -n $K $file_name > top_$file_name # create bottom of file: tail -n $L $file_name > bottom_$file_name

Además, pensándolo bien, split funcionará en su caso, ya que la primera división es más grande que la segunda. Split pone el saldo de la entrada en la última división, por lo

split -l 300000 file_name

producirá xaa con 300k líneas y xab con 100k líneas, para una entrada con 400k líneas.