Página principal » cómo » Divida un archivo de texto a la mitad (o cualquier porcentaje) en Ubuntu Linux

    Divida un archivo de texto a la mitad (o cualquier porcentaje) en Ubuntu Linux

    Si tiene un archivo de texto difícil de manejar que está tratando de procesar, dividirlo en secciones a veces puede ayudar al tiempo de procesamiento, especialmente si íbamos a importar un archivo en una hoja de cálculo. O quizás desee simplemente recuperar un conjunto particular de líneas de un archivo.

    Introduzca split, wc, tail, cat y grep. (No olvides sed y awk). Linux contiene un amplio conjunto de utilidades para trabajar con archivos de texto en la línea de comandos. Para nuestra tarea de hoy usaremos split y wc..

    Primero echamos un vistazo a nuestro archivo de registro ... .

    > ls -l
    -rw-r-r- 1 thegeek ggroup 42046520 2006-09-19 11:42 access.log

    Vemos que el tamaño del archivo es de 42MB. Eso es un poco grande ... pero ¿con cuántas líneas estamos tratando? Si quisiéramos importar esto en Excel, tendríamos que mantenerlo a menos de 65k líneas.

    Revisemos la cantidad de líneas en el archivo usando la utilidad wc, que significa "conteo de palabras".

    > wc -l access.log
    146330 access.log

    Estamos muy por encima de nuestro límite. Tendremos que dividir esto en 3 segmentos. Usaremos la utilidad de división para hacer esto.

    > split -l 60000 access.log
    > ls -l

    total 79124
    -rw-rw-r- 1 thegeek ggroup 40465200 2006-09-19 12:00 access.log
    -rw-rw-r- 1 thegeek ggroup 16598163 2006-09-19 12:05 xaa
    -rw-rw-r- 1 thegeek ggroup 16596545 2006-09-19 12:05 xab
    -rw-rw-r- 1 thegeek ggroup 7270492 2006-09-19 12:05 xac

    Ahora hemos dividido nuestros archivos de texto en 3 archivos separados, cada uno con menos de 60000 líneas, lo que parece ser un buen número para elegir. El último archivo contiene la cantidad restante. Si fueras a cortar este archivo en particular a la mitad, habrías hecho esto:

    > split -l 73165 access.log

    Y, eso es todo lo que hay que hacer..