? Tengo un archivo que continúa con un número de líneas. Quiero dividir el archivo en n no de archivos con nombres particulares. No importa cuántas líneas hay en cada archivo. Solo quiero un número especial de archivos (digamos 5). aquí el problema es que el no de líneas en el archivo original sigue cambiando. Entonces necesito calcular el número de líneas y luego dividir los archivos en 5 partes. Si es posible, tenemos que enviar cada uno de ellos a diferentes directorios.¿Cómo puedo dividir un archivo en n de partes
Respuesta
en Linux, hay un comando split
, piezas
split --lines=1m /path/to/large/file /path/to/output/file/prefix
salida de tamaño fijo de la entrada a PREFIXaa, PREFIXab, ...; el tamaño predeterminado es 1000 líneas, y PREFIX predeterminado es 'x'. Sin ENTRADA, o cuando ENTRADA es -, lea la entrada estándar.
...
-l, --lines = número líneas puesto número por archivo de salida
...
Usted tendría que calcular el tamaño real de las divisiones de antemano, sin embargo.
Esto se divide en líneas o bytes? –
aquí el tamaño del archivo también cambia todos los días ... Necesito una respuesta general en la que no se deba usar el tamaño o no. –
Tengo que escribir un script de shell para esto. ¿Alguien me puede ayudar con –
Suponiendo que está procesando un archivo de texto, entonces wc -l
para determinar el número total de líneas y split -l
para dividir en un número específico de líneas (total/5 en su caso). Esto funciona en UNIX/Mac y Windows (si tiene cygwin instalado)
Puedo pensar en algunas formas de hacerlo. Lo que usaría depende mucho de los datos.
líneas son de longitud fija: Encontrar el tamaño del archivo mediante la lectura de su entrada en la guía y se divide por la longitud de línea para obtener el número de líneas. Use esto para determinar cuántas líneas por archivo.
Los archivos solo necesitan tener aproximadamente el mismo número de líneas. Vuelva a leer el tamaño del archivo desde la entrada del directorio. Lea las primeras N líneas (N debe ser pequeña pero una fracción razonable del archivo) para calcular una longitud de línea promedio. Calcule el número aproximado de líneas en función del tamaño del archivo y la longitud de línea media pronosticada. Esto supone que la longitud de la línea sigue una distribución normal. Si no, ajuste su método para muestrear líneas al azar (usando seek() o algo similar). Rebobina el archivo después de tener tu promedio, luego divídelo según la longitud de línea predicha.
Lea el archivo dos veces. La primera vez cuente el número de líneas. La segunda vez dividiendo el archivo en las piezas requeridas.
EDITAR: El uso de un script de shell (de acuerdo con sus comentarios), la versión aleatorio de # 2 sería difícil a menos que usted escribió un pequeño programa para hacer eso por usted. Debería poder usar ls -l
para obtener el tamaño de archivo, wc -l
para contar el número exacto de líneas, y head -nNNN | wc -c
para calcular la longitud de línea promedio.
En bash, puede usar el comando split
para dividirlo en función del número de líneas deseadas. Puede usar el comando wc
para averiguar cuántas líneas desea. Aquí está wc
combinado con split
en una línea.
Por ejemplo, para dividir onepiece.log
en 5 partes
split -l$((`wc -l < onepiece.log`/5)) onepiece.log onepiece.split.log -da 4
Esto creará archivos como onepiece.split.log0000
...
Nota: división de fiesta redondea a la baja, por lo que si hay un resto no lo hará ser un archivo de la sexta parte.
** split -da 4 -l $ (('wc -l
excelente mejora, @grasshopper – Flowpoke
esta respuesta es más conciso que las dos [preguntas arriba más altas] (http://stackoverflow.com/questions/7764755/unix-how-to-split- a-file-into-equal-parts-without-breaking-individual-lines) en stackoverflow y askubuntu. –
- 1. ¿Cómo puedo dividir un documento XML en tres partes (o, mejor aún, n partes)?
- 2. Cómo dividir un vector en n partes "casi iguales"
- 3. cómo dividir una lista en n partes iguales, pitón
- 4. ¿Cómo puedo dividir un archivo en python?
- 5. ¿Cómo puedo dividir un archivo mp3 en varias partes jugables individualmente?
- 6. ¿Cómo dividir una matriz en partes iguales?
- 7. ¿Cómo dividir un NSArray en dos partes iguales?
- 8. ¿Cómo puedo dividir un archivo PDF en páginas (preferiblemente C#)
- 9. Dividir una cadena en dos partes
- 10. ¿Cómo dividir cadena en 2 partes después de cierta posición
- 11. ¿Cómo dividir una secuencia en dos partes por predicado?
- 12. ¿Cómo dividir la pantalla en tres partes verticalmente?
- 13. ¿Cómo puedo dividir y recortar una cadena en partes, todo en una sola línea?
- 14. ¿Puedo dividir el archivo de griales config.groovy?
- 15. ¿Puedo dividir system.serviceModel en un archivo .config separado?
- 16. ¿Cómo puedo dividir un archivo de texto basado en bloques de comentarios en Python?
- 17. ¿Cómo dividir un archivo de texto en palabras?
- 18. ¿Cómo puedo dividir una cadena en solo dos partes con Perl?
- 19. ¿Cómo puedo dividir archivos grandes?
- 20. ¿Cómo dividir una cadena en dos partes usando un separador de caracteres en C#?
- 21. Cómo dividir las líneas del archivo de texto de Windows (separación de/r/n)
- 22. ¿Dividir una colección en partes según la condición con LINQ?
- 23. ¿Cómo dividir la cadena en solo dos partes con un personaje dado en Ruby?
- 24. Cargar partes de App.Config desde otro archivo
- 25. ¿Puedo grep solo las primeras n líneas de un archivo?
- 26. Cómo tener diferentes partes del archivo de configuración en C#
- 27. variables decimal Dividir en partes integrales y fracciones
- 28. Cómo dividir un BitArray
- 29. C#: ¿cómo leer partes de un archivo? (DICOM)
- 30. ¿Cómo se renderiza partes * * de un archivo SVG?
¿Con qué? Una herramienta, un lenguaje de programación, un script ...? –
Windows, Linux? ¿Qué idioma (s) tienes disponible? –
Tengo que hacerlo en UNIX –