Cómo reemplazar múltiples líneas usando el comando 'sed'

Cómo reemplazar múltiples líneas usando el comando 'sed'
A veces requiere reemplazar múltiples líneas de un archivo con cualquier carácter o texto en particular. Existen diferentes comandos en Linux para reemplazar múltiples líneas de un archivo. El comando 'sed' es uno de ellos para hacer este tipo de tarea. La forma completa de 'sed' es editor de vapor, y se usa principalmente para leer y convertir el texto de diferentes maneras utilizando una expresión regular. La forma en que este comando se puede usar para reemplazar las múltiples líneas de un archivo de diferentes maneras se explican en este tutorial.

Hoja de trucos 'sed' comúnmente utilizada:

Los caracteres más utilizados utilizados en el comando 'sed' se explican en la siguiente tabla.

Personaje Objetivo
a Se usa para agregar contenido.
b Se usa para ramificar contenido.
C Se usa para cambiar de contenido.
d Se usa para eliminar una línea de un archivo.
D Se usa para eliminar la primera línea de un archivo.
gramo Solía ​​copiar desde el texto de retención.
GRAMO Se usa para agregar del texto de retención.
H Se usa para copiar en el texto de retención.
H Se usa para agregar al texto de retención.
i Se usa para la inserción.
I Se usa para imprimir la línea sustituta.
norte Se usa para ir a la siguiente línea.
norte Se usa para agregar la siguiente línea de entrada.
pag Se usa para imprimir.
PAG Se usa para imprimir la primera línea.
Q Se usa para dejar de fumar.
Q Se usa para dejar de fumar inmediatamente.
riñonal Se usa para leer el archivo.
Riñonal Se usa para leer la línea desde el archivo.
s Se usa para sustituir.
T Se usa para evaluar la sustitución.
T Se usa para probar sin sustitución.
w Se usa para escribir en el archivo.
W Se usa para escribir una línea en el archivo.
X Se usa para intercambiar patrones y sostener.
Y Se usa para traducir.
z Se usa para borrar la línea.
'=' Se usa para imprimir el número de línea.

Reemplace múltiples líneas usando el comando 'SED' desde el terminal:

En esta parte de este tutorial se puede usar el comando 'SED' para reemplazar las múltiples líneas desde un archivo desde el terminal. Crea un archivo llamado sed.TXT con el siguiente contenido prueba los comandos de esta parte.

sed.TXT

La forma completa de SED es "Editor de transmisión".

Es una utilidad Unix que se utiliza para leer y convertir el texto en un formato diferente.

Fue desarrollado por Lee E. McMahon.

Se usa para el procesamiento de texto.

Admite expresiones regulares.

Ejemplo-1: reemplace dos líneas consecutivas

El siguiente comando 'sed' reemplazará dos líneas consecutivas con otra línea. Aquí, la opción -z se usa para reemplazar las líneas consecutivas con datos nulos antes de agregar el texto de reemplazo. Según el comando, el 3rd y 4th Las líneas del archivo serán reemplazadas por el texto, 'Es una herramienta muy útil'.

$ Cat Sed.TXT
$ Sed -Z 'S/fue desarrollado por Lee E. McMahon.\ nit se usa para texto
Procesando./Es una herramienta muy útil./'sed.TXT

La siguiente salida aparecerá después de ejecutar los comandos.

Ejemplo-2: reemplace múltiples líneas basadas en la bandera de coincidencia y global

El siguiente comando 'sed' reemplazará todas las líneas que comienzan con la palabra, 'Él' por la palabra, 'Esta línea se reemplaza '.

$ Cat Sed.TXT
$ sed 's/^it.*/Esta línea se reemplaza/g 'sed.TXT

La siguiente salida aparecerá después de ejecutar los comandos. Tres líneas contienen la palabra 'Él' en el archivo. Entonces, estas líneas han sido reemplazadas por el texto de reemplazo.

Ejemplo-3: reemplace múltiples líneas basadas en el comando coincidente y la próxima línea

El siguiente comando 'sed' reemplazará la palabra ',es'Por la palabra'era'Con el comando de próxima línea,' n '.

$ Cat Sed.TXT
$ sed 'n;/is/s/is/was/' sed.TXT

La siguiente salida aparecerá después de ejecutar los comandos. Aquí, 'es' existe en los 2Dakota del Norte y 4th líneas del archivo, y estas líneas se modifican por la palabra 'era'.

Reemplace múltiples líneas creando el archivo de script 'SED':

En los ejemplos anteriores, los comandos 'sed' se han ejecutado desde el terminal. Pero es un lenguaje de secuencias de comandos, y si el script contiene múltiples declaraciones, entonces es mejor crear un archivo SED con el script. Crear un archivo de texto llamado estudiantes.TXT con el siguiente contenido en el que se aplicará el script 'Sed'.

estudiantes.TXT

ID: 111045
Nombre: Robert
Departamento: CSE
Lote: 35
ID: 111876
Nombre: Joseph
Departamento: BBA
Lote: 27
ID: 111346
Nombre: William
Departamento: CSE
Lote: 45
ID: 111654
Nombre: Charles
Departamento: EEE
Lote: 41
ID: 111346
Nombre: John
Departamento: CSE
Lote: 25
ID: 111746
Nombre: Thomas
Departamento: CSE
Lote: 15

Ejemplo-4: reemplace múltiples líneas de un archivo utilizando el archivo de script 'sed'

Crear un archivo SED nombrado para reemplazar.sed con el siguiente contenido para reemplazar las múltiples líneas basadas en el patrón de búsqueda. Aquí, la palabra 'CSE'se buscará en el archivo de texto, y si la coincidencia existe, volverá a buscar nuevamente el número 35 y 15. Si el segundo partido existe en el archivo, será reemplazado por el número 45.

reemplazar.sed

/ CSE/
p; n;
/ 35/
S/35/45/;
p; d;

/15/
S/15/55/;
p; d;


pag;

Ejecute el siguiente comando para verificar el contenido existente del archivo. 'CSE' apareció cuatro veces en el archivo de texto. 35 y 15 existen en dos lugares.

Estudiantes de $ Cat.TXT

El siguiente comando reemplazará el contenido de las múltiples líneas en función del script SED.

$ sed -n -f reemplazar.estudiantes SED.TXT

La siguiente salida aparecerá después de ejecutar el comando.

Conclusión

En este tutorial se han mostrado diferentes formas de reemplazar múltiples líneas o el contenido de las múltiples líneas utilizando el comando 'SED'. Cómo se puede ejecutar el script 'SED' a partir de un archivo SED también se muestra en este tutorial. Espero que este tutorial ayude al lector a reemplazar múltiples líneas de cualquier archivo utilizando el comando 'sed'.