sed

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

Cómo insertar una línea después de la coincidencia usando '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 mediante 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á "ing."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 utiliza 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 utilizar 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 utilizar 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 productos.TXT con el siguiente contenido para mostrar los usos de la bandera anterior en el comando "sed".

productos.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 "a"

Los siguientes comandos muestran cómo se puede agregar una nueva línea, después de un número de línea particular de los productos.txt, basado en 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.

$ productos para gatos.TXT
$ sed '2 a b01 \ t Productos en polvo para hornear'.TXT
$ productos para gatos.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 con la "a"

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 utiliza en el patrón del comando "sed" para mencionar la última línea del archivo.

$ productos para gatos.TXT
$ sed '$ a b01 \ tProductos en polvo para hornear'.TXT
$ productos para gatos.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 con la "a"

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 de ella. La cuarta línea del archivo comienza con "s01", y la nueva línea se insertará después de esa línea.

$ productos para gatos.TXT
$ sed '/ ^ s01.* / a b01 \ tProductos en polvo para hornear.TXT
$ productos para gatos.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.

$ productos para gatos.TXT
$ sed '/ Powder $ / a b01 \ tBaking Powder' productos.TXT
$ productos para gatos.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 "a"

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.

$ productos para gatos.TXT
$ sed '/ ^ [a-c] / a b01 \ tBaking Powder \ nb02 \ tBaking Soda' products.TXT
$ productos para gatos.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"

$ productos para gatos.TXT
$ sed '/ cream / i b01 \ tBaking Powder' productos.TXT
$ productos para gatos.TXT

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

Ejemplo 7: inserte una línea de forma permanente después del patrón coincidente con 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.

$ productos para gatos.TXT
$ sed -i '/ e $ / a g01 \ tGhee' productos.TXT
$ productos para gatos.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.

El botón de clic izquierdo del mouse no funciona en Windows 10
Si está utilizando un mouse dedicado con su computadora portátil o computadora de escritorio, pero el el botón izquierdo del mouse no funciona en Wind...
El cursor salta o se mueve aleatoriamente mientras escribe en Windows 10
Si descubre que el cursor del mouse salta o se mueve por sí solo, automáticamente, de manera aleatoria mientras escribe en una computadora portátil o ...
Cómo invertir la dirección de desplazamiento del mouse y los paneles táctiles en Windows 10
Ratón y Panel táctils no solo facilitan la informática, sino que también hacen que sea más eficiente y requieran menos tiempo. No podemos imaginar una...