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!