Re: Crear una variable al vuelo... y que sea interpretada como tal y no como texto.

2016-04-25 Por tema Debia Linux
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.

2016-04-14 Por tema 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

Saludos,

-- 
Camaleón



Re: Crear una variable al vuelo... y que sea interpretada como tal y no como texto.

2016-04-13 Por tema Debia Linux
### 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.

2016-04-13 Por tema 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