Tengo un archivo SQL de unas 23.000 líneas que contiene el volcado de varias bases de datos. Lo que necesito es extraer varias líneas de ese archivo. En concreto necesito extraer un rango de líneas definido por una línea de inicio y un final y guardar el resultado en otro archivo. Para resolver el problema conozco tanto la línea de inicio como la línea final.
¿Alguien conoce un comando o script de Bash con el que pueda extraer por ejemplo de la línea 16224
a la línea 16482
ambas inclusive y guardar el resultado en un archivo nuevo?
Estás leyendo una traducción autorizada de la pregunta
How can I extract a range of lines from a text file on unix?
planteada por Adam J. Forster
en StackOverflow.
Respuestas
Este es el comando que tienes que ejecutar:
$ sed -n 16224,16482p archivo_completo.sql > extracto.sql
Explicación:
16224,16482
son las líneas de inicio y final, ambas inclusive. Recuerda que al empezar a contar, la primera línea del archivo es1
, no0
.-n
hace que el archivo completo no se vuelque en la salida estándar, ya que en este caso no lo necesitas.-p
hace que se impriman las líneas que se han extraído.> extracto.sql
hace que el resultado de ejecutar todo lo anterior se guarde en el archivoextracto.sql
@librosweb
4 octubre 2014, 22:51