Necesito eliminar las primeras 42 líneas de un volcado SQL de 2GB.
Sé que puedo ver las primeras líneas usando:
head -n 44 dump.sql
Pero, ¿hay alguna forma de editarlos o eliminarlos?
Necesito eliminar las primeras 42 líneas de un volcado SQL de 2GB.
Sé que puedo ver las primeras líneas usando:
head -n 44 dump.sql
Pero, ¿hay alguna forma de editarlos o eliminarlos?
Respuestas:
Si solo desea ver las líneas de la 43 en adelante, puede usar
tail -n +43 dump.sql
El +
signo es importante: sin él, tail
imprimirá las últimas 43 líneas. Alternativamente con 'sed'
sed 1,42d dump.sql
Si realmente desea eliminar las primeras 42 líneas del archivo original, puede hacer que sed realice el cambio en el lugar con la -i
opción
sed -i 1,42d dump.sql
sed -i 1,50000000d 17GigFile
crea un archivo temporal sedXYZ
que consume muchos más gigabytes. ¿Hay un enfoque sin archivos temporales?
tail -n +43
y head -n 44
como se menciona en la pregunta?
Esto parece ser lo más fácil:
sed '1,42d' test.sql > test2.sql
Elimine las líneas 1-42 de test.sql y guárdelas como test2.sql
Puede usar Vim en modo Ex:
ex -s -c '1d42|x' dump.sql
1
pasar a la primera línea
42
seleccione 42 líneas
d
Eliminar
x
guardar y cerrar
Lo siento, no puedo darte el código actual en este momento. Sin embargo, intente mirar algo en la línea de
tail -n arcv(`wc -l`) -44
Lo que esto debería hacer (una vez formateado correctamente) es contar el número de líneas en el archivo (wc -l), restar 44 de él (-44) y luego imprimir todo comenzando con la línea 45 del archivo.
Espero que esto ayude y buena suerte.
wc -l
en el archivo, que lo procesa dos veces, mientras que sed
o tail
procesar una sola vez.
Solo para agregar esto. Si está en una Mac, debe agregar la extensión de copia de seguridad. Respuesta de esta publicación .
sed -i '.bak' 1,42d dump.sql
Debido a las sed
discrepancias entre Linux y Mac, decidí usar el tail -n +43 dump.sql > dump.sql
formato.
tail
. Encontré muchas veces algo nuevo que aprender de sus respuestas. Gracias.