Foros del Web » Administración de Sistemas » Unix / Linux »

shell con awk con parametros $

Estas en el tema de shell con awk con parametros $ en el foro de Unix / Linux en Foros del Web. Hola. En esta ocacion tengo problemas con un shell que usa awk. Necesito buscar una cadena dentro de un archivo de texto, para lo cual, ...
  #1 (permalink)  
Antiguo 28/03/2007, 13:59
 
Fecha de Ingreso: marzo-2007
Mensajes: 7
Antigüedad: 17 años, 1 mes
Puntos: 0
shell con awk con parametros $

Hola.
En esta ocacion tengo problemas con un shell que usa awk.
Necesito buscar una cadena dentro de un archivo de texto, para lo cual, al correr el shell se le pasa como parametro.

#!/usr/bin/sh
#!/usr/bin/bash

Parametro=$1
awk -F"|" '/$Parametro/ {print $5}' transacciones.log

No me regresa nada por que no reconoce el contenido de la variable $Parametro si no que lo pasa como la cadena a encontrar.

Se agredece de ante mano las posibles soluciones.
  #2 (permalink)  
Antiguo 28/03/2007, 16:51
Avatar de AleSanchez
Colaborador
 
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 3.692
Antigüedad: 19 años, 7 meses
Puntos: 47
Re: shell con awk con parametros $

es por las comillas simples, probalo asi:
Código:
#!/usr/bin/bash

Parametro=$1
awk -F"|" "'/$Parametro/ {print $5}'" transacciones.log
__________________
¡Volviendo a la programación!
  #3 (permalink)  
Antiguo 28/03/2007, 17:57
 
Fecha de Ingreso: marzo-2007
Mensajes: 7
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: shell con awk con parametros $

Hola.
Gracias por tu respuesta pero aun no me funciona.
Hice lo que me recomendaste:

#!/usr/bin/bash

Parametro=$1

awk -F"|" "'/$Parametro/ {print $5}'" transacciones.log

Me sale el siguiente error:

bash-3.00$ test6.sh "cualquier cosa" <----------- sin comillas
syntax error The source line is 1.
The error context is
>>> ' <<<
awk: Quitting
The source line is 1.

Agradesco tu interes.
  #4 (permalink)  
Antiguo 30/03/2007, 14:03
 
Fecha de Ingreso: marzo-2007
Mensajes: 7
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: shell con awk con parametros $

Encontré una forma de hacer este shell y otra vez utilice un archivo de entrada para comandos.

#!/usr/bin/sh
#!/usr/bin/bash

Parametro=$1

echo "/$Parametro/ {print \$5}" > temp.dat

awk -F"|" -f temp.dat transacciones.log

El problema es que si no se especifica ninguna cadena de entrada, muestra el texto que encontro en $5.
Creo que esto se puede validar, para que si el valor de $Parametro es nulo, no se ejecute.
Otro detalle es que si buscamos, por ejemplo, la cadena "Tres tristes tigres" dentro del archivo transacciones.log y al shell solo le pasamos la cadena "Tres", me va a mostrar "Tres tristes tigres".
  #5 (permalink)  
Antiguo 18/03/2010, 15:18
 
Fecha de Ingreso: marzo-2010
Mensajes: 1
Antigüedad: 14 años, 1 mes
Puntos: 0
shell con awk con parametros $

Hola, apelo a la experiencia de todos para ver si me pueden ayudar.
Me gustaria saber como hacer esto:

awk '/^<\?xml/{close($BOZ_REP_TRAITEf);f++}{print $0 > "$BOZ_REP_TRAITE"f}' $fic

necesito pasarle el nombre de archivo por parametro, en este caso la variable de entorno $BOZ_REP_TRAITE y le concateno el secuenciador..
Es el unico parametro que necesito pero no me esta funcionando, se que el $ no funciona para parametros dentro del awk pero ni idea como pasarlo, he probado con archivos pero no me funciono.

se puede?
gracias!
  #6 (permalink)  
Antiguo 19/03/2010, 01:23
Avatar de arthpix  
Fecha de Ingreso: diciembre-2003
Ubicación: Cancún
Mensajes: 2.340
Antigüedad: 20 años, 4 meses
Puntos: 93
Respuesta: shell con awk con parametros $

Si se puede, pero por favor... antes de postear lee las políticas del foro. Este post será cerrado por que reviviste un tema muy viejo (regla 2.8).

Te invito a abrir un nuevo tema y plantear tu duda en él. Seguramente alguien sabrá ayudarte.


Saludos.
__________________
Antes de hacer rabietas infórmate: Linux != Windows
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 00:52.