Cómo dividir un archivo en un número de línea [cerrado]


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

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

¿Hay 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 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 superusuario o serverfault.

Author: denormalizer, 2010-06-18

1 answers

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

También, pensándolo bien, dividir funcionará en su caso, ya que la primera división es más grande que la segunda. Split pone el equilibrio de la entrada en la última división, así que

split -l 300000 file_name

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

 174
Author: academicRobot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-15 06:55:10