Inicio > Procesamiento y búsqueda de texto > csplit

csplit: Dividir archivos según el contenido

El comando csplit se utiliza para dividir el contenido de un archivo en varios archivos más pequeños basándose en un patrón específico (expresión regular) o un número de línea. Es útil para dividir y analizar o gestionar archivos de registro grandes o código fuente en secciones específicas.

Descripción general

csplit divide un archivo de entrada en varios archivos de salida según un patrón o número de línea especificado. Cada archivo de salida contendrá una sección consecutiva del archivo original, y los nombres de archivo se compondrán de un prefijo especificado y un sufijo numérico.

Características principales

  • División basada en expresiones regulares o números de línea
  • Posibilidad de especificar prefijo y formato de sufijo para los nombres de archivo de salida
  • Facilita la extracción y gestión de secciones específicas de archivos grandes

Opciones principales

Control de archivos de salida

Control del comportamiento de división

Comando generado:

Combina los comandos.

Descripción:

`csplit` Ejecutando el comando.

Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.

Ejemplos de uso

Dividir archivo por número de línea

echo -e "$(seq 1 35)" > test.txt
csplit test.txt 10 20 30

Divide el archivo test.txt en las líneas 10, 20 y 30. (Ej: xx00: líneas 1-9, xx01: líneas 10-19, xx02: líneas 20-29, xx03: desde la línea 30 hasta el final)

Dividir archivo por expresión regular

echo -e "Line 1\nLine 2\nERROR: First error\nLine 4\nLine 5\nERROR: Second error\nLine 7" > log.txt
csplit -f part_ log.txt '/^ERROR:/' '{*}'

Divide el archivo log.txt basándose en líneas que comienzan con '^ERROR:', y especifica 'part_' como prefijo del archivo. '{*}' significa agrupar el resto del contenido en un solo archivo.

Dividir especificando prefijo y número de dígitos

echo -e "[Section 1]\nContent A\n[Section 2]\nContent B\n[Section 3]\nContent C" > data.log
csplit -f my_file_ -n 3 data.log '/^\[Section \d+\]/' '{*}'

Divide el archivo data.log por el patrón '[Section N]' y genera nombres de archivo como 'my_file_000', 'my_file_001', etc.

Dividir excluyendo líneas coincidentes

echo -e "Line 1\nERROR: First error\nLine 3\nERROR: Second error" > log.txt
csplit --suppress-match -f no_error_ log.txt '/^ERROR:/' '{*}'

Divide el archivo log.txt por el patrón '^ERROR:', pero sin incluir las líneas que comienzan con 'ERROR:' en cada archivo dividido.

Consejos y precauciones

El comando csplit es potente, pero se debe tener cuidado al usar expresiones regulares.

Consejos útiles

  • Al usar expresiones regulares, envuélvelas entre comillas para evitar la interpretación por parte del shell.
  • La línea que sirve como criterio de división se convierte por defecto en la primera línea del siguiente archivo. Puedes excluir esa línea con la opción `--suppress-match`.
  • '{*}' significa agrupar todos los archivos restantes en uno solo. Si no se usa esta opción, el contenido posterior al último criterio de división se descartará.

Precauciones

  • No modifica el archivo original: csplit no modifica el archivo original, sino que crea nuevos archivos divididos.
  • Manejo de errores: Pueden ocurrir errores si las expresiones regulares no coinciden o si los números de línea no son válidos. Las expresiones regulares deben escribirse con precisión.

Comandos de la misma categoría