Cómo reemplazar varias líneas usando el comando `sed`

How Replace Multiple Lines Using Sed Command



A veces es necesario reemplazar varias líneas de un archivo con cualquier carácter o texto en particular. Existen diferentes comandos en Linux para reemplazar varias líneas de un archivo. El comando `sed` es uno de ellos para realizar este tipo de tareas. La forma completa de `sed` es Steam Editor, y se usa principalmente para leer y convertir el texto de diferentes maneras usando una expresión regular. En este tutorial se explica cómo se puede usar este comando para reemplazar las múltiples líneas de un archivo de diferentes maneras.

Hoja de referencia `sed` de uso común:

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







Personaje Objetivo
a Se utiliza para agregar contenido.
b Se utiliza para ramificar contenido.
c Se utiliza para cambiar contenido.
D Se utiliza para eliminar una línea de un archivo.
D Se utiliza para eliminar la primera línea de un archivo.
gramo Solía ​​copiar del texto de espera.
GRAMO Se usa para agregar desde el texto de espera.
h Se utiliza para copiar en el texto de espera.
H Se usa para agregar al texto de espera.
I Se utiliza para la inserción.
I Se utiliza para imprimir la línea sustituta.
norte Se utiliza para pasar a la siguiente línea.
norte Se utiliza para agregar la siguiente línea de entrada.
pag Se usa para imprimir.
PAG Se utiliza para imprimir la primera línea.
q Se usa para dejar de fumar.
Q Se utiliza para dejar de fumar inmediatamente.
r Se utiliza para leer el archivo.
R Se utiliza para leer la línea del archivo.
s Se usa para sustituir.
t Se utiliza para probar la sustitución.
T Se utiliza para probar si no hay sustitución.
en Se utiliza para escribir en el archivo.
EN Se utiliza para escribir una línea en el archivo.
x Se utiliza para intercambiar patrones y mantener.
y Se usa para traducir.
Con Se usa para despejar la línea.
‘=’ Se utiliza para imprimir el número de línea.

Reemplaza varias líneas usando el comando `sed` de la terminal:

En esta parte de este tutorial se muestra cómo se puede usar el comando `sed` para reemplazar las múltiples líneas de un archivo desde la 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 el editor de secuencias.





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

Fue desarrollado por Lee E. McMahon.



Se utiliza para el procesamiento de texto.

Admite expresiones regulares.

Ejemplo 1: Reemplazo de 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 3rdy 4thlas líneas del archivo serán reemplazadas por el texto, 'Es una herramienta muy útil' .

$gatosed.txt
$sed -Con 's / Fue desarrollado por Lee E. McMahon. nSe usa para texto
procesamiento./Es una herramienta muy útil./ '
sed.txt

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

Ejemplo-2: Reemplazar varias líneas según la coincidencia y el indicador global

El siguiente comando `sed` reemplazará todas las líneas que comiencen con la palabra, 'Eso' por la palabra ' Esta línea se reemplaza ‘.

$gatosed.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 ' Eso ' en el archivo. Entonces, estas líneas han sido reemplazadas por el texto de reemplazo.

Ejemplo-3: Reemplazo de varias líneas según la coincidencia y el comando de la siguiente línea

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

$gatosed.txt
$sed '{n; / is / {s / is / was /}}'sed.txt

La siguiente salida aparecerá después de ejecutar los comandos. Aquí, 'es' existe en el 2Dakota del Nortey 4thlíneas del archivo, y estas líneas son modificadas por la palabra 'era' .

Reemplace varias líneas creando el archivo de secuencia de comandos `sed`:

En los ejemplos anteriores, los comandos `sed` se han ejecutado desde la terminal. Pero es un lenguaje de secuencias de comandos, y si la secuencia de comandos contiene varias declaraciones, es mejor crear un archivo sed con la secuencia de comandos. Crea 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: Reemplazar varias líneas de un archivo usando el archivo de secuencia de comandos `sed`

Cree un archivo sed con el nombre de reemplazar.sed con el siguiente contenido para reemplazar las múltiples líneas según el patrón de búsqueda. Aquí, la palabra ' CSE 'Se buscará en el archivo de texto y, si existe la coincidencia, volverá a buscar los números 35 y 15. Si la segunda coincidencia existe en el archivo, será reemplazada 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.

$gatoestudiantes.txt

El siguiente comando reemplazará el contenido de las múltiples líneas basadas en el script sed.

$sed -norte -Freemplazar.sed estudiantes.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 usando el comando `sed`. En este tutorial también se muestra cómo se puede ejecutar el script `sed` desde un archivo sed. Espero que este tutorial ayude al lector a reemplazar varias líneas de cualquier archivo usando el comando `sed`.