¿Cómo insertar una línea después de la coincidencia usando `sed`?

How Insert Line After Match Using Sed



Uno de los comandos útiles y poderosos de Linux es el comando sed. Este comando se usa para realizar diferentes tipos de tareas en Linux, como insertar, actualizar y eliminar un texto o línea en particular según la coincidencia. Puede insertar un texto en una cadena o un archivo de diferentes formas usando el comando sed.

En este tutorial se muestra cómo insertar una línea después de encontrar una coincidencia en una cadena o una línea.







Insertar una línea en la Cadena

Se puede insertar una nueva línea después de cualquier valor de cadena usando el comando sed si el patrón definido en el comando coincide con cualquier parte del valor de cadena.



El siguiente ejemplo muestra cómo se puede agregar una nueva línea después de un valor de cadena si existe una cadena en particular en cualquier lugar del valor de cadena.



Ejemplo 1: insertar una línea en una cadena después de encontrar una coincidencia

El siguiente comando buscará inng en la cadena, me gusta programar, y una línea de texto, ¿te gusta programar? se insertará después de la cadena si la cadena de búsqueda existe.





Aquí, el carácter & se usa para insertar la línea después de la cadena.

$echo 'Me gusta programar'. | sed 's / inng / & ¿Te gusta programar? /'

El siguiente resultado muestra que inng no existe en la cadena y no se inserta ninguna línea después de la cadena.




El siguiente comando buscará. en la cadena, me gusta programar y existe en la cadena.

$echo 'Me gusta programar'. | sed 's / ing ./& ¿Te gusta programar? /'

El siguiente resultado muestra que la nueva línea se agrega después de la cadena.

Insertar una línea en un archivo

Hay dos formas de insertar una línea después de encontrar una coincidencia en un archivo que se menciona a continuación. Cuando se usa el comando sed sin la opción -i, el contenido del archivo permanecerá sin cambios y la salida mostrará el contenido del archivo con la nueva línea insertada. Debe usar la opción -i con el comando sed para insertar la nueva línea de forma permanente en el archivo si el patrón coincidente existe en el archivo.

A. Usando a en el comando sed

La a se puede usar en el patrón de búsqueda del sed para agregar una o más líneas en un archivo después de la línea donde el patrón de búsqueda coincide o después de un número de línea en particular.

B. Usando i en el comando sed

La i se puede utilizar en el patrón de búsqueda del comando sed para insertar una o más líneas en un archivo antes de la línea donde coincide el patrón de búsqueda.

Inserte línea (s) en un archivo según el patrón:

Cree un archivo de texto delimitado por tabulaciones llamado products.txt con el siguiente contenido para mostrar los usos de la bandera anterior en el comando sed.

products.txt

Nombre de identificación

01 crema batida

02 Cacao en polvo

03 Azúcar

04 huevo

05 Harina

Ejemplo-2: Inserte una línea después de un número de línea en particular usando la

Los siguientes comandos muestran cómo se puede agregar una nueva línea, después de un número de línea particular del archivo products.txt, según el patrón utilizado en el comando sed.

Aquí, el primer comando mostrará el contenido existente del archivo. El comando sed agregará el texto, b01 Polvo de hornear, después de las dos primeras líneas del archivo. El último comando se usa para verificar que el contenido del archivo haya cambiado o no.

$gatoproducts.txt

$sed '2 a b01 t Polvo de hornear'products.txt

$gatoproducts.txt

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

Ejemplo-3: Inserte una línea después de la última línea usando la

El siguiente comando muestra la forma de agregar una nueva línea después de la última línea del archivo. El primer y último comando muestra el contenido existente del archivo antes y después de ejecutar el comando sed. El símbolo $ se usa en el patrón del comando sed para mencionar la última línea del archivo.

$gatoproducts.txt

$sed '$ a b01 t Polvo de hornear'products.txt

$gatoproducts.txt

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

Ejemplo-4: Inserte una línea en cualquier lugar del archivo después de hacer coincidir un patrón usando el

El siguiente comando sed muestra cómo se puede agregar una nueva línea en cualquier lugar del archivo según el patrón coincidente. El patrón utilizado en el comando sed buscará cualquier línea que comience con s01 y agregará la nueva cadena después. La cuarta línea del archivo comienza con s01 y la nueva línea se insertará después de esa línea.

$gatoproducts.txt

$sed '/^s01.*/a b01 t Polvo de hornear'products.txt

$gatoproducts.txt

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


El siguiente comando sed buscará cualquier línea que termine con Powder e insertará la nueva línea después. La tercera línea del archivo termina con Polvo. Entonces, la nueva línea se insertará después de esa línea.

$gatoproducts.txt

$sed '/ Polvo $ / a b01 t Polvo de hornear'products.txt

$gatoproducts.txt

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

Ejemplo-5: Inserte varias líneas después del patrón coincidente usando un

El siguiente comando sed muestra la forma de agregar varias líneas dentro del contenido de un archivo según el patrón coincidente.

Aquí, se agregarán dos líneas después de la tercera línea, de acuerdo con el patrón.

$gatoproducts.txt

$sed '/ ^ [a-c] / a b01 tPolvo para hornear nb02 tBaking Soda'products.txt

$gatoproducts.txt

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

Ejemplo-6: Inserte una línea después de hacer coincidir un patrón usando la I

$gatoproducts.txt

$sed '/ crema / i b01 tPolvo para hornear'products.txt

$gatoproducts.txt

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

Ejemplo-7: Inserte una línea permanentemente después del patrón coincidente usando la opción -i

El siguiente comando sed muestra cómo cambiar el contenido del archivo de forma permanente. La opción i se usa con el comando sed para insertar una nueva línea en el archivo según el patrón.

$gatoproducts.txt

$sed -I '/ e $ / a g01 tGhee'products.txt

$gatoproducts.txt

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

Conclusión:

Las formas de insertar dos o más líneas en un archivo usando el comando sed con patrón se han mostrado en este tutorial para ayudar al lector a aplicar este comando para insertar líneas en el temporal o permanentemente basado en el patrón.