Tengo un archivo en un sistema Linux de aproximadamente 10 GB. Contiene 20,000,000 de registros binarios, pero cada registro está separado por un delimitador ASCII "$". Me gustaría utilizar el comando dividir o alguna combinación de los mismos para dividir el archivo en partes más pequeñas. Idealmente, podría especificar que el comando debería dividir cada 1,000 registros (por lo tanto, cada 1,000 delimitadores) en archivos separados. ¿Alguien puede ayudarme con esto?División de un archivo en el delimitador
Respuesta
La única parte no ortodoxa del problema parece ser el separador de registros. Estoy seguro de que esto se puede arreglar fácilmente en awk, pero odio awk
.
Me transferirlo en el ámbito de los problemas 'normales' en primer lugar:
tr '$' '\n' < large_records.txt | split -l 1000
Esta voluntad por defecto crear xaa
, xab
, xac
... archivos; mira man split
para más opciones
Me encanta :) awk
BEGIN { RS="$"; chunk=1; count=0; size=1000 }
{
print $0 > "/tmp/chunk" chunk;
if (++count>=size) {
chunk++;
count=0;
}
}
(tenga en cuenta que el operador de redirección en AWK sólo se trunca/crea el archivo en su primera invocación - las referencias posteriores se tratan como operaciones anexar - a diferencia de cáscara de redirección)
Asegúrese de manera predeterminada la división Unix agotará con sufijos una vez que se alcanza el umbral máximo del límite sufijo por defecto de 2. Más información en: https://www.gnu.org/software/coreutils/manual/html_node/split-invocation.html
- 1. División de líneas basadas en un delimitador en UNIX
- 2. división de cadenas utilizando un delimitador en Python
- 3. cadena. Función de división en delimitador de tabulación C#
- 4. división de cadenas a base de un delimitador
- 5. División de un archivo en Linux basado en el contenido
- 6. Establecer el delimitador MySQL dentro de un archivo sql
- 7. Java División de una cadena en 2 cadenas basadas en un delimitador.
- 8. Separación de cadena sin eliminar el delimitador
- 9. Dividir archivo basado en el delimitador de cadenas en bash.how?
- 10. División XML de un archivo grande
- 11. Comportamiento de división de cadenas en cadena vacía y en cadena de delimitador único
- 12. Columna/Asterisco como un delimitador de nombre de archivo?
- 13. División de un archivo XML grande en Python
- 14. División de un archivo usando AWK en Mac OS X
- 15. Dividir una matriz de bytes en un delimitador
- 16. error de división por cero en el archivo .xml
- 17. División de cadena que contiene letras y números no separados por ningún delimitador particular en PHP
- 18. División en la primera aparición
- 19. Abrir archivo Nerdtree en división no adyacente
- 20. dividida cadena con delimitador en C#/ASP.Net
- 21. Python: Dividir por 1 o más ocurrencias de un delimitador
- 22. ¿Por qué String.split necesita el delimitador de tuberías para escaparse?
- 23. Cómo invocar un parámetro en un archivo por lotes con un delimitador de coma
- 24. división en el carácter de la tubería en Perl
- 25. ¿Hay una función de "cuadro delimitador" (división con valores distintos de cero) para un ndarray en NumPy?
- 26. ¿Cómo dividir un archivo de texto en varios archivos?
- 27. Eliminar usando un delimitador diferente
- 28. División de cadenas en el primer punto
- 29. ¿Cómo puedo obtener la segunda y tercera columna en el archivo delimitador de pestañas en bash?
- 30. Cálculo del rectángulo delimitador en un ángulo de un polígono
Esto funcionó perfectamente para los registros que produce hasta que llegó a un error (supongo que es una solución muy fácil). El error es: split: sufijos del archivo de salida agotados. ¡Gracias por tu ayuda! –
Ermmm ... He arreglado el enlace de la página de manual para usted; ['split ... -a 7'] (http://unixhelp.ed.ac.uk/CGI/man-cgi?split) debería funcionar bien – sehe
Excelente. ¡Funciona genial! –