28Jun

Cómo eliminar líneas del medio de un archivo usando el terminal de Linux

Cuando gestiona sus propios servidores, una de las cosas que necesita hacer de manera semi-regular es extraer material del medio de un archivo. Tal vez es un archivo de registro, o necesita una sola tabla extra desde el medio de su archivo de copia de seguridad MySQL, como yo lo hice.

Para averiguar los números de línea, un simple comando grep -n hizo el trabajo( el argumento -n da como resultado los números de línea).Esto hizo que fuera más fácil averiguar qué necesitaba extraer.

grep -n wp_posts howtogeekdb010114.bak |más

Resulta en algo como esto, que muestra los números de línea en el lado izquierdo de la salida. Al convertir todo en "más", puedes ver la primera línea sin que se desplace. Ahora tiene el número de línea para comenzar, y probablemente el último para terminar.

4160: - Estructura de tabla para la tabla `wp_posts` 4163: DROP TABLE IF EXISTS` wp_posts`;4166: CREATE TABLE `wp_posts`( 4203: - Datos de volcado para la tabla` wp_posts` 4206: LOCK TABLES `wp_posts` WRITE; 4207: / *! 40000 ALTER TABLE` wp_posts` DISABLE KEYS * /; 4208: INSERT INTO `wp_posts`VALUES( 1,2, '2006-09-11 05:07:23', '2006-09-11

Podría, por supuesto, simplemente canalizar la salida de grep a otro archivo, así:

grep keyword filename.txt & gt; archivo de salida

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

sed -n '4160,4209p' howtogeekdb0101140201.bak & gt; 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 'filename & gt; outputfilename

¿Hay otras formas en que puede extraer líneas específicas en el medio de un archivo? Puede usar el "head""Comando con el argumento + número para simplemente leer las primeras x líneas de un archivo, y luego use cola para extraer esas líneas. No es la mejor opción, muchos gastos generales.¿Opción más simple? Puede usar el comando dividir para convertir el archivo en varios archivos directamente en el número de línea que desee, y luego extraer las líneas usando cabeza o cola.

O simplemente puede usar sed.