es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Construir una lista de claves de población con el valor del entorno de esa clave.

Tengo una lista de llaves en un ARCHIVO:

FOO
BAR
BAZ

Estoy tratando de construir un comando sed para reemplazar cada línea con:

FOO=$FOO
BAR=$BAR
BAZ=$BAZ

Donde el lado derecho es el valor de la variable de entorno con ese nombre. Por ejemplo, configurando las variables de entorno:

export FOO=1
export BAR=2
export BAZ=3

Después de ejecutar sed, el ARCHIVO debería ser:

FOO=1
BAR=2
BAZ=3

He intentado estos:

  • sed -i 's/^\(.*\)$/\1=$\1/g'
  • sed -i "s/^\(.*\)$/\1=$\1/g"
  • sed -i s/^\(.*\)$/\1="\$$1"/g

Y algunas otras variaciones. El problema está claramente en cómo se escapa el grupo de captura, pero no sé cómo solucionarlo.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para construir el comando sed que reemplace cada línea con el nombre de la variable de entorno y su valor en el ARCHIVO dado, utilice el siguiente comando:

    sed -i 's/.*/&=$(echo &)/' FILE
    

    Este comando reemplazará cada línea en el ARCHIVO con la misma línea pero con el nombre de la variable de entorno y su valor, usando el comando echo dentro de la sustitución sed para obtener el valor de la variable de entorno con el mismo nombre que la línea.

    Por ejemplo, si el ARCHIVO contiene:

    FOO
    BAR
    BAZ
    

    Y las variables de entorno se establecen de la siguiente manera:

    export FOO=1
    export BAR=2
    export BAZ=3
    

    Después de ejecutar el comando sed, el ARCHIVO será:

    FOO=1
    BAR=2
    BAZ=3
    

    Tenga en cuenta que se utiliza la bandera -i para realizar la sustitución in situ, lo que significa que el ARCHIVO se actualizará con los nuevos valores.

Comments are closed.