es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo usar csplit para dividir un archivo según cada X cantidad de coincidencias de delimitadores.

Tengo un archivo de 457 MB y estoy tratando de dividirlo en archivos mucho más pequeños. Esto es lo que está funcionando actualmente:

csplit -z Scan.nessus /<reporthost/ '{*}'

sin embargo, esto crea alrededor de 61.5k para mí, ya que tengo un montón de estas entradas en este archivo de 457 mb. en última instancia, me gustaría dividirlo por cada 50 entradas en lugar de cada entrada individualmente.

¿hay alguna forma de modificar esto para lograr eso? intenté hacer esto en ruby hasta cierto punto, pero parece que agota la memoria de la máquina virtual al intentar analizar el archivo con nokogiri. ‘{*}’="" sin="" embargo,="" esto="" crea="" alrededor="" de="" 61.5k="" para="" mí,="" ya="" que="" tengo="" un="" montón="" de="" estas="" entradas="" en="" este="" archivo="" de="" 457="" mb.="" en="" última="" instancia,="" me="" gustaría="" dividirlo="" por="" cada="" 50="" entradas="" en="" lugar="" de="" cada="" entrada="" individualmente.="" ¿hay="" alguna="" forma="" de="" modificar="" esto="" para="" lograr="" eso?="" intenté="" hacer="" esto="" en="" ruby="" hasta="" cierto="" punto,="" pero="" parece="" que="" agota="" la="" memoria="" de="" la="" máquina="" virtual="" al="" intentar="" analizar="" el="" archivo="" con=""></reporthost/ '{*}'

sin embargo, esto crea alrededor de 61.5k para mí, ya que tengo un montón de estas entradas en este archivo de 457 mb. en última instancia, me gustaría dividirlo por cada 50 entradas en lugar de cada entrada individualmente.

¿hay alguna forma de modificar esto para lograr eso? intenté hacer esto en ruby hasta cierto punto, pero parece que agota la memoria de la máquina virtual al intentar analizar el archivo con nokogiri.>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para modificar el comando csplit y dividir el archivo de 457 MB en fragmentos más pequeños de 50 entradas, puedes agregar la opción -k para mantener los archivos de salida en lugar de eliminarlos, y combinarlo con la opción -n para especificar el número de dígitos en los nombres de los archivos de salida.

    El comando actualizado se vería así:

    csplit -z -k -n 3 Scan.nessus /\<ReportHost/ '{50}'
    

    En este comando, ‘{50}’ especifica dividir el archivo cada 50 entradas. La opción -n 3 asegura que los nombres de los archivos de salida tengan un relleno de 3 dígitos (por ejemplo, xx001, xx002, …). La opción -k mantiene los archivos de salida en lugar de eliminarlos.

    Esto debería resultar en archivos de salida más pequeños que contengan 50 entradas cada uno.

Comments are closed.