Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

¿Cómo se puede extraer un rango de líneas de un archivo de texto mediante un comando?

17 de septiembre de 2011

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

#1

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 es 1, no 0.
  • -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 archivo extracto.sql

@librosweb

4 octubre 2014, 22:51