Linux / Comando csplit: dividir archivos por líneas o patrones
csplit divide el archivo no por un tamaño fijo, sino en la posición donde aparece el número de línea o un patrón coincidente. Es útil cuando se desea separar el texto con límites de sección.
Si se especifican el punto de división y el prefijo del nombre del archivo, se pueden crear fragmentos que se ajusten a la estructura del documento. El nombre del archivo de salida predeterminado se genera como xx00, por lo que se recomienda usar un directorio dedicado y un prefijo para que no coincida con otros archivos de trabajo.
Sintaxis básica
csplit [opciones] archivo_entrada patrón ...
La implementación instalada y las opciones pueden variar según la distribución. Verifique la descripción de man csplit en el sistema actual.
Ejemplos de uso
División por número de línea
Los ejemplos con notes.txt, report.txt y book.txt presuponen archivos existentes con las líneas o los encabezados indicados; el bloque de sample.txt posterior crea sus propios datos. Para dividir en la línea 11, prepare al menos 11 líneas: el primer fragmento contiene las 10 primeras y el segundo empieza en la 11.
csplit -f part- notes.txt 11
División por patrón
Se inicia un nuevo fragmento desde la línea en la que aparece el patrón.
csplit -f section- report.txt '/^Chapter /'
División repetida a partir de múltiples coincidencias
En GNU csplit, la repetición {*} aplica el patrón anterior tantas veces como sea posible; mantenga las comillas para que el shell no lo interprete.
csplit -f chapter- book.txt '/^Chapter /' '{*}'
Ver archivos divididos por patrón
csplit divide la entrada en la ubicación donde comienza la línea del patrón especificado. -s oculta la cantidad de bytes de cada fragmento que se muestra de forma predeterminada.
printf 'one\nTWO\ntwo\n' > sample.txt
csplit -s -f part- sample.txt '/^TWO$/'
cat part-00
cat part-01
Ejemplo de salida al ejecutar dos comandos cat consecutivamente:
one
TWO
two
part-00 contiene one, la línea anterior a la coincidencia; part-01 contiene la línea coincidente TWO y la siguiente, two. Si el patrón no se encuentra, csplit falla y puede eliminar los fragmentos creados, salvo que use -k. La ejecución puede sobrescribir nombres de salida existentes: use un directorio vacío de prueba y un prefijo distinto para cada ejemplo.
Opciones y formatos principales
| Opción o formato | Descripción |
|---|---|
-f prefijo |
Establece la parte inicial del nombre del archivo de los fragmentos de salida. |
-n N |
Establece el número de dígitos del sufijo numérico. |
-s |
Oculta la salida del tamaño en bytes de cada fragmento. |
-z |
No crea archivos de salida vacíos. |
-k |
Incluso si ocurre un error, se mantienen los fragmentos ya creados. |
Precauciones al usar
Si no hay un patrón o si los límites no coinciden con lo esperado, el número y la ubicación de los fragmentos pueden variar. Primero verifique los resultados con una entrada de prueba y no ejecute esto en un directorio donde existan archivos de salida con nombres existentes. A diferencia de split, la regla de división en sí depende del contenido del archivo.
Preguntas frecuentes
¿Debe usarse split o csplit?
Si se desea dividir uniformemente por tamaño o número de líneas, use split; si se desea dividir en un número específico de líneas o patrón de encabezado, csplit es más adecuado.
Documentación oficial
Puede consultar el comportamiento exacto de las opciones y las diferencias de implementación en la documentación oficial relacionada con csplit.




