GNU/Linux >> Tutoriales Linux >  >> Linux

Inserte varias líneas de datos en un archivo después de que el patrón coincida con el script de shell de Linux

¿Tiene un fragmento de código que debe insertarse en varios archivos? Entonces, ¡eres como yo pasando por un momento difícil! Estaba trabajando en un sitio web alojado en cpanel que tenía numerosos archivos HTML en cada uno de los cuales se debía insertar un código emergente. La cantidad de archivos HTML fue de 425. Fue una pesadilla hacerlo en Windows. Pero oye, ¿no te dije que encontré una forma más inteligente de hacerlo? ¡Compruebe a continuación!

Paso 1:Copiar archivos desde CPANEL

Copie todos los archivos de cpanel a su sistema de Windows local usando WinSCP.

Paso 2:Copiar archivos de Windows a Linux

Luego copie los archivos HTML a un servidor Linux. Si no tiene un servidor propio, puede ejecutar un sistema Linux virtualmente en su escritorio usando virtualbox. Vea cómo instalar virtualbox aquí.

Paso 3:Use el comando 'sed' para insertar código

Use el siguiente comando sed para insertar su código desde otro archivo. Por ejemplo:datos que se insertarán desde el archivo "add.txt" en "input.txt". Ahora el comando sería:

Entrada.txt

abcd
efgh
ijkl
mnop
qrst

añadir.txt

uvwx
yzab
cdef
ghij
klmn
$sed '/ijkl/r add.txt' input.txt

El comando agregaría el contenido de add.txt a input.txt después de que coincida el patrón "ijkl". Entonces la salida sería:

abcd
efgh
ijkl
uvwx
yzab
cdef
ghij
klmn
mnop
qrst

El comando anterior generaría el contenido en la terminal. Para actualizar el archivo con el contenido, utilice el comando "-i" con sed como se muestra a continuación:

$sed -i '/ijkl/r add.txt' input.txt

Si tiene que insertar contenido ingresando directamente y no desde el archivo, puede usar el siguiente comando:

$sed -i 's/.*ijkl.*/uvwx\n&/' input.txt
abcd
efgh
ijkl
uvwx
mnop
qrst

Paso 4:Ejecutar el comando anterior en un bucle con el número de archivos

Ir al directorio donde se deben modificar los archivos. Use "for loop" inserte los datos con el siguiente comando:

for i in *;
do
    $sed '/ijkl/r add.txt' $i
done

En el código anterior * representa los archivos. Para cada archivo, como $i, agregue el contenido del archivo add.txt después de que coincida el patrón "ijkl".

Paso 5:Copiar los archivos de Linux a Windows a Cpanel

El paso final es volver a copiar los archivos editados del servidor Linux al sistema de Windows local. Y luego use scp o ftp para copiar archivos del sistema de Windows local a cpanel.


Linux
  1. Linux:¿recuperación de datos después de copiar el archivo al dispositivo de bloqueo?

  2. ¿Cómo agregar varias líneas a un archivo?

  3. Cómo cambiar el nombre de varios archivos juntos en Linux usando 3 métodos

  4. Script de shell de Linux para agregar ceros iniciales a los nombres de archivo

  5. ¿Cómo generar una lista de líneas únicas en un archivo de texto usando un script de shell de Linux?

Cómo dividir un archivo grande en varios archivos pequeños usando el comando Dividir en Linux

Cómo dividir un archivo grande en varios archivos pequeños usando el comando Dividir en Linux

Cómo compartir archivos localmente en Linux usando NitroShare

8 métodos para cambiar el nombre de varios archivos a la vez en Linux

Cómo sincronizar archivos de dos vías usando Osync Script en Linux

¿Plantillas con Linux en un script de Shell?