Tengo un archivo de volcado MySQL de gran tamaño (250G) del que solo quiero/necesito una base de datos. esperaba usarawkpara dividir el archivo, así que busqué un poco yencontróesta expresión:
awk '/START/{x="F"++i;}{print > x;}' file2
Parece un buen comienzo (y funciona bien usando su archivo de muestra), pero ejecutándolo como:
awk '/CREATE DATABASE/{x="F"++i;}{print > x;}' file2
me da errores como este:
awk: (FILENAME=dump_all.sql FNR=1) fatal: expression for `>' redirection has null string value
Otras páginas (de SE) informan que esto se debe a que aparece una línea en blanco.
Me encantaría utilizar esta técnica para obtener la parte que quiero de este archivo, pero mi conocimiento deawkla sintaxis es (claramente) bastante limitada. ¿Hay alguna manera de hacer que esto funcione?
Respuesta1
No sé si esto resolverá tu problema real. Como no nos ha mostrado el archivo de entrada real, no tengo idea si lo que está intentando funcionará. En cualquier caso, para corregir el error que estás recibiendo, usa esto:
awk '/CREATE DATABASE/{x="F"++i;}(x){print > x;}' file2
Eso modifica el script para que solo intente imprimir en el archivo x
si la variable x
está configurada. El error que estaba recibiendo se debió a que estaba intentando imprimir todas las líneas, algunas de las cuales aparentemente están antes de la CREATE DATABASE
cadena en cuyo punto x
se desestableció. El guión anterior equivale a escribir:
awk '{
if(/CREATE DATABASE/){i=i+1; x="F"i;}
if(x!=NULL){print > x }
}' file2