Cómo usar Sed en Linux

Sed significa editor de flujo. Es un editor de línea de comandos para Linux. El uso popular de sed es para editar archivos como parte de un script de automatización en Linux, ya que los editores habituales requieren la entrada activa del usuario y no pueden editar archivos fuera de las pantallas del editor. Sed se usa más comúnmente para buscar y reemplazar desde la línea de comando.

Este tipo de editor de texto también se puede clasificar como editor de texto no interactivo.

Veamos algunas opciones comunes para editar archivos usando Sed. Tomaremos el siguiente archivo como ejemplo:

$: cat test.txt Un rápido perro marrón saltó sobre el gato perezoso. Sistema operativo Linux. El bosque cerca de mi casa tiene gatos y lobos. 

Buscar y reemplazar

Para buscar una cadena en un archivo y reemplazarla con otra cadena, ejecute:

sed -i "s / cat / fox / g" test.txt

Aquí el -I flag indica a sed que escriba los cambios en el archivo. Sin esta bandera sed simplemente mostrará el archivo con la cadena cambiada.

En las comillas, tenemos s / gato / zorro / g. El s es para el comando de búsqueda y reemplazo de sed. Luego tenemos la cadena a buscar, que es gato. Luego, la cadena con la que reemplazarlo, es decir, zorro. Finalmente, tenemos el opcional gramo, que instruye sed para reemplazar todas las ocurrencias en todas las líneas del archivo. Sin el gramo, sed reemplazará solo la primera aparición de gato en cada línea.

Regex también se puede utilizar aquí.

sed -i "s / f [a-z] * \ ./ cat \ ./ g"

Insertar

Para insertar texto antes de una línea con una cadena coincidente, use:

sed -i "/ cat / i Inicio:" test.txt

Aquí, gato es la cadena buscada y Comienzo: es la cadena que se debe ingresar antes de la línea donde se encuentra la cadena buscada.

De manera similar, para insertar texto después de una línea, use:

sed -i "/ fox / a Fin". test.txt

Borrar

Para eliminar una línea que contiene una subcadena, use:

sed -i "/ Linux / d" test.txt

Para eliminar una línea con número de línea, p. Ej. la primera línea, use:

sed -i '1d' test.txt

Combinando múltiples funciones

Para combinar múltiples funciones, p. Ej. buscar y reemplazar, eliminar, en un comando, -mi se puede utilizar la bandera.

sed -i -e "s / fox / cat / g" -e '2d' test.txt

? ¡Salud!