Re: Crear una variable al vuelo... y que sea interpretada como tal y no como texto.
2016-04-14 9:30 GMT-05:00 Camaleón : > El Wed, 13 Apr 2016 22:36:50 -0500, Debia Linux escribió: > >> ### TEXTO CORREGIDO EL ANTERIOR DEJA DE TENER VALOR # > > (...) > >>> Deseo que la siguiente sentencia $`awk -F "|" '{ print $3 }' >>> $RUTA'tmp1'` tome el valor de la variable $VAR1 y no que sea sustituido >>> como texto. >>> >>> Ya que al revisar el $RUTA'archivo' me aparece el texto $VAR1 y no lo >>> que debería ejecutar la variable VAR2 (FEO) que solo es una palabra. > > Dale un ojo a esto: > > printing variable inside awk > http://stackoverflow.com/questions/1825509/printing-variable-inside-awk Gracias, ya le heche un ojo, sin embargo se me ha complicado entenderle, pero la noticia es que ya quedo SOLUCIONADO el problema. Explico brevemente lo que hice (que no se que significa) me dio resultado porque lo vi en un post. Si alguien me pudiera decir como funciona, aprenderia mas. La solucion es la siguiente: El problema no es resolver la variable dentro de una variable en awk, ni en sed, ni en otra aplicacion. el problema radica en la Variable dentro de una Variable. Esto me di cuenta porque quise resolver el problema mediante el comando echo pero me dio el mismo problema, me imprimia el texto en lugar de una variable. Asi que busque y la solucion estaba sencilla... Tengo un script con los siguientes datos: El archivo "1" contiene: a|b|DEBIAN LINUX|BONITO| El archivo "2" contiene: a|b|MAC|RARO| El archivo "3" contiene: a|b|WINDOWS|FEO| El archivo "documento" contiene: |EL SISTEMA OPERATIVO ES: TEXTO-A-CAMBIAR # INICIA SCRIPT # #!/bin/bash # Variables DOCUMENTO="/home/user/documento" VAR1="/home/user/1" VAR2="/home/user/2" VAR3="/home/user/3" BONITO="DEBIAN-LINUX-ES-GRANDIOSO" RARO="EL-SISTEMA-MAC-ES-PURA-SACADERA-DE-PLATA" FEO="EL-SISTEMA-WINDOWS-ES-INESTABLE" # Variable dentro de variable (que no era variable pero la convertimos en variable al vuelo) # que mostrara la palabra BONITO y que bonito se convertira en variable. # Este texto se convertira en variable e=`awk -F "|" '{ print $4 }' $VAR1` # Muestro solo para saber si muestra el texto BONITO echo "EL SISTEMA OPERATIVO DEBIAN LINUX ES EL MAS: $e" read # Reemplazo TEXTO-A-CAMBIAR por la variable "al vuelo" sed -i "s/TEXTO-A-CAMBIAR/${!e}/g" $DOCUMENTO # Muestro como se reemplazo el texto en el documento cat $DOCUMENTO read clear echo "Quedo SOLUCIONADO el problema" echo "Solo me gustaria que me dijeran tecnicamente" echo "como funciona {!e}" # Muestro por pantalla todas sus aportaciones. echo "Agradezco a toda la comunidad GNU" echo "Porque el conocimiento lo hacemos todos" echo " y es para todos." echo "" echo "P.D. La solucion la encontre navegando, la posteo un usuario linux hace tiempo." echo "No recuerdo el vinculo" sleep 5 > > Saludos, > > -- > Camaleón >
Re: Crear una variable al vuelo... y que sea interpretada como tal y no como texto.
El Wed, 13 Apr 2016 22:36:50 -0500, Debia Linux escribió: > ### TEXTO CORREGIDO EL ANTERIOR DEJA DE TENER VALOR # (...) >> Deseo que la siguiente sentencia $`awk -F "|" '{ print $3 }' >> $RUTA'tmp1'` tome el valor de la variable $VAR1 y no que sea sustituido >> como texto. >> >> Ya que al revisar el $RUTA'archivo' me aparece el texto $VAR1 y no lo >> que debería ejecutar la variable VAR2 (FEO) que solo es una palabra. Dale un ojo a esto: printing variable inside awk http://stackoverflow.com/questions/1825509/printing-variable-inside-awk Saludos, -- Camaleón
Re: Crear una variable al vuelo... y que sea interpretada como tal y no como texto.
### TEXTO CORREGIDO EL ANTERIOR DEJA DE TENER VALOR # Listeros: Buenas noches y antes que nada agradezco todas sus colaboraciones. Ahora ando con mucho trabajo resolviendo muchos dilemas al mismo tiempo, por eso escribo mis dudas. Ya tengo experiencia en linux, ya he cumplido muchos años usando este maravilloso sistema, pero sigo teniendo muchas dudas. Les explico una de ellas. Tengo 3 archivos, cada uno con una palabra: ~/1 contiene la palabra BONITO ~/2 contiene la palabra FEO ~/3 contiene la palabra RARO Tengo un script que tiene 3 variables y uso el comando sed para suplir un texto. y tengo un archivo de texto llamado tmp1 y que tiene lo siguiente: a|b|VAR1| El archivo de texto tmp1 puede contener cualquiera de las siguientes tres palabras que son cambiadas aleatoriamente (pero solo una a la vez); VAR1, VAR2, VAR3 y se mantienen en la columna 3. ## #!/bin/bash ya que mediante un proceso VAR1=`cat ~/1` VAR2=`cat ~/2` VAR3=`cat ~/3` sed -i "s/texto_a_sustituir/\$`awk -F "|" '{ print $3 }' $RUTA'tmp1'`/g" $RUTA'tmp1' ## Deseo que la siguiente sentencia $`awk -F "|" '{ print $3 }' $RUTA'tmp1'` tome el valor de la variable $VAR1 y no que sea sustituido como texto. Ya que al revisar el $RUTA'tmp1' me aparece el texto $VAR1 y no lo que debería ejecutar la variable VAR1 (BONITO) que solo es una palabra. Espero pudieran ayudarme. Gracias Debianeromx 2016-04-13 22:32 GMT-05:00 Debia Linux : > Listeros: > > buenas noches y antes que nada agradezco todas sus colaboraciones. > > Ahora ando con mucho trabajo resolviendo muchos dilemas al mismo > tiempo, por eso escribo mis dudas. > > Ya tengo experiencia en linux, ya he cumplido muchos años usando este > maravilloso sistema, pero sigo teniendo muchas dudas. Les explico una > de ellas. > > Tengo 3 archivos, cada uno con una palabra: > > ~/1 contiene la palabra BONITO > ~/2 contiene la palabra FEO > ~/3 contiene la palabra RARO > > Tengo un script que tiene 3 variables y uso el comando sed para suplir un > texto. > > y tengo un archivo de texto llamado tmp1 y que tiene lo siguiente: > > a|b|VAR1| > > El archivo de texto tmp1 puede contener cualquiera de las siguientes > tres palabras que son cambiadas aleatoriamente (pero solo una a la > vez); VAR1, VAR2, VAR3 y se mantienen en la columna 3. > > ## > #!/bin/bash > ya que mediante un proceso > VAR1=`cat ~/1` > VAR2=`cat ~/2` > VAR3=`cat ~/3` > > cat > > sed -i "s/texto_a_sustituir/\$`awk -F "|" '{ print $3 }' > $RUTA'tmp1'`/g" $RUTA'archivo' > > ## > > Deseo que la siguiente sentencia $`awk -F "|" '{ print $3 }' > $RUTA'tmp1'` tome el valor de la variable $VAR1 y no que sea > sustituido como texto. > > Ya que al revisar el $RUTA'archivo' me aparece el texto $VAR1 y no lo > que debería ejecutar la variable VAR2 (FEO) que solo es una palabra. > > Espero pudieran ayudarme. > > Gracias > > Debianeromx
Crear una variable al vuelo... y que sea interpretada como tal y no como texto.
Listeros: buenas noches y antes que nada agradezco todas sus colaboraciones. Ahora ando con mucho trabajo resolviendo muchos dilemas al mismo tiempo, por eso escribo mis dudas. Ya tengo experiencia en linux, ya he cumplido muchos años usando este maravilloso sistema, pero sigo teniendo muchas dudas. Les explico una de ellas. Tengo 3 archivos, cada uno con una palabra: ~/1 contiene la palabra BONITO ~/2 contiene la palabra FEO ~/3 contiene la palabra RARO Tengo un script que tiene 3 variables y uso el comando sed para suplir un texto. y tengo un archivo de texto llamado tmp1 y que tiene lo siguiente: a|b|VAR1| El archivo de texto tmp1 puede contener cualquiera de las siguientes tres palabras que son cambiadas aleatoriamente (pero solo una a la vez); VAR1, VAR2, VAR3 y se mantienen en la columna 3. ## #!/bin/bash ya que mediante un proceso VAR1=`cat ~/1` VAR2=`cat ~/2` VAR3=`cat ~/3` cat sed -i "s/texto_a_sustituir/\$`awk -F "|" '{ print $3 }' $RUTA'tmp1'`/g" $RUTA'archivo' ## Deseo que la siguiente sentencia $`awk -F "|" '{ print $3 }' $RUTA'tmp1'` tome el valor de la variable $VAR1 y no que sea sustituido como texto. Ya que al revisar el $RUTA'archivo' me aparece el texto $VAR1 y no lo que debería ejecutar la variable VAR2 (FEO) que solo es una palabra. Espero pudieran ayudarme. Gracias Debianeromx