Página principal » cómo » Cómo eliminar líneas desde la mitad de un archivo usando el terminal de Linux

    Cómo eliminar líneas desde la mitad de un archivo usando el terminal de Linux

    Cuando administras tus propios servidores, una de las cosas que tienes que hacer de forma semipreparable es extraer cosas de la mitad de un archivo. Tal vez sea un archivo de registro, o necesita extra una sola tabla desde la mitad de su archivo de copia de seguridad de MySQL, como hice.

    Para calcular los números de línea, un simple comando grep -n hizo el trabajo (el argumento -n genera los números de línea). Esto hizo que fuera fácil averiguar lo que necesitaba extraer.

    grep -n wp_posts howtogeekdb010114.bak | Más

    Resultados en algo como esto, que muestra los números de línea en el lado izquierdo de la salida. Al insertar todo en "más", se asegura de que pueda ver la primera línea sin que se desplace. Ahora tienes el número de línea para comenzar, y probablemente el que termina con.

    4160: - Estructura de la tabla para la tabla 'wp_posts' 4163: DROP TABLE IF EXISTS 'wp_posts'; 4166: CREAR LA TABLA 'wp_posts' (4203: - Descargar datos para la tabla 'wp_posts' 4206: BLOQUEAR TABLAS 'wp_posts' ESCRIBIR; 'VALORES (1,2,' 2006-09-11 05:07:23 ',' 2006-09-11

    Por supuesto, podría simplemente canalizar la salida de grep a otro archivo, como este:

    grep keyword filename.txt> archivo de salida

    En mi caso, eso no quería funcionar porque no podía importar la copia de seguridad resultante por algún motivo. Entonces, encontré una forma diferente de extraer las líneas usando sed, y este método funcionó.

    sed -n '4160,4209p' howtogeekdb0101140201.bak> archivo de salida

    Básicamente, la sintaxis es así, asegurándose de usar el argumento -n e incluir la "p" después del segundo número de línea.

    sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' nombre de archivo> nombre de archivo de salida

    ¿Alguna otra forma de sacar líneas específicas en medio de un archivo? Puede usar el comando "head" con el argumento + number para leer las primeras x líneas de un archivo y luego usar tail para extraer esas líneas. No es la mejor opción, muchos gastos generales. ¿Opción más sencilla? Puede usar el comando dividir para convertir el archivo en varios archivos justo en el número de línea que desea, y luego extraer las líneas con cabecera o cola.

    O simplemente puedes usar sed.