texto sustituir script reemplazar para linea insertar especiales espacios eliminar comando caracteres blanco linux bash replace sed

linux - sustituir - ¿Cómo usar sed para reemplazar la variable de un archivo de configuración?



sed linux reemplazar (5)

He estado buscando esta respuesta en línea y parece que no puedo encontrarla.

Tengo un archivo de configuración que contiene:

VAR1=VALUE1 VAR2=VALUE2 VAR3=VALUE3 VAR4=VALUE4 VAR5=VALUE5 VAR6=VALUE6

Y quiero cambiar el valor de VAR5 de VALUE5 a VALUE10. Lamentablemente, no conozco el valor de VALUE5, así que no puedo buscarlo. Entonces, básicamente necesito usar sed (o lo que sea) para reemplazar el valor de VAR5 por cualquier valor con el que quiera reemplazarlo.


Aunque la respuesta se ha agregado a la pregunta. Pasé algún tiempo sobre cómo funciona, me gustaría agregar algunos hechos y mi versión de la respuesta,

sed -i ''s,^/(THISISMYVARIABLE[ ]*=/).*,/1''THISISMYVALUE'',g'' config.cfg

Explicación:

  • Como básico de sed ''s/find_this/replace_with/'' , estamos diciendo sed para buscar y reemplazar. También recuerde que hay muchos otros delimitadores que podemos usar en lugar de / . Aquí , se usa.
  • Aquí encontramos la línea que coincide con ^/(THISISMYVARIABLE[ ]*=/).* . Esto significa que estamos agrupando la coincidencia THISISMYVARIABLE[ ]*= . ( [ ]* para cubrir si hay espacios después de la tecla)
  • En la sección de reemplazo /1 hay una retrospectiva. Somos referencia del primer grupo en la expresión regular que usamos para el partido.

Pruebe lo siguiente

sed -r ''s / ^ (VAR5 =). * / / 1REPLACEMENT /''

El valor de VAR5 se reemplazará por REEMPLAZO.


Puedes decir:

sed ''/^VAR5=/s/=.*/=VALUE10/'' filename

Para realizar cambios en el archivo in situ , use la opción -i :

sed -i ''/^VAR5=/s/=.*/=VALUE10/'' filename


Puedes probar este sed:

sed -i.bak ''s/^/(VAR5=/).*//1VALUE10/'' file

Da:

VAR1=VALUE1 VAR2=VALUE2 VAR3=VALUE3 VAR4=VALUE4 VAR5=VALUE10 VAR6=VALUE6


sed ''//(^VAR5=/).*/ s///1VALUE10/'' YourFile

Debajo de AIX / KSH

$ cat sample.txt VAR1=VALUE1 VAR2=VALUE2 VAR3=VALUE3 VAR4=VALUE4 VAR5=VALUE5 VAR6=VALUE6 $ sed ''//(^VAR5=/).*/ s///1VALUE10/'' sample.txt VAR1=VALUE1 VAR2=VALUE2 VAR3=VALUE3 VAR4=VALUE4 VAR5=VALUE10 VAR6=VALUE6

y para reemplazo en archivo

cat <> YourFile | sed ''//(^VAR5=/).*/ s///1VALUE10/'' $ cat <> sample.txt | sed ''//(^VAR5=/).*/ s///1VALUE10/'' $ cat sample.txt VAR1=VALUE1 VAR2=VALUE2 VAR3=VALUE3 VAR4=VALUE4 VAR5=VALUE10 VAR6=VALUE6

Para ser compatible con POSIX (sobre sed , no cat ) (sed --posix en gnu sed y sed nativo tradicional en sistema no linux)