Linux/Unix Shell Scripting - Problemas con script de AWK

   
Vista:

Problemas con script de AWK

Publicado por LXP (4 intervenciones) el 01/10/2015 21:37:05
Hola, soy nuevo en esto de la programacion en AWK y necesito hacer un script donde de un archivo de tres columnas tomo la tercera y se la resto a la segunda y luego esta nueva columna que se me genera de la resta, debo hallarle el valor minimo...

Aqui les pongo el script que he creado para ver si me pueden ayudar a encontrar el error pq en lugar de devolverme el valor minimo, no me muestra nada y ya he probado de varias formas y no logro obtener lo que necesito...

Agradecido de antemano por su ayuda... aqui les va el script


awk '{$4=$2-$3; min=0; if (min<$4); min=$4; print min}' 1.txt
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problemas con script de AWK

Publicado por Tom (253 intervenciones) el 02/10/2015 09:04:51
No lo he probado, pero algo así debería funcionar:

1
awk 'BEGIN { min = 0 } {val=$2-$3; if(val < min) min=val;} END {print min}'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Problemas con script de AWK

Publicado por LXP (4 intervenciones) el 02/10/2015 16:01:46
Muchisimas Gracias funciono de maravilla, algo parecido ya habia hecho pero habia algun error pq no me daba exactamente el valor minimo..

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas con script de AWK

Publicado por LXP (4 intervenciones) el 02/10/2015 16:31:32
Perdon, pero ahora me ha surgido otra duda... ahora debo escribir un script awk que reciba una traza como entrada y entregue un archivo con dos columnas: tiempo en segundos, y retardo, he realizado dos script distintos pero en ninguno de los dos casos me da la informacion reuqerida, en el primer caso solo obtengo dos columnas con un valor cada una, cndo deberian ser varios pq se supone que va iterando, y en el segundo caso obtengo igual dos columnas pero esta vez con varias filas(registros) pero todas tienen el valor 0..

Por favor si pudieras revisar, mis script a ver dnd esta el error, pq he buscado distintas formas de hacerlo y estas dos son las unicas que me dan medianamente algo como lo que quiero, solo que con estas dificultades.

SCRIPT 1
1
2
3
4
$ awk 'BEGIN { min = 0 } {var=$2-$3; if(val < min) min=val}
{dee=(var- min)/8000}
{NR==1; ts1=$3;}
{NR>=2; tsesion=(($3-ts1)/8000)} END {print dee,tsesion > "retardo1.txt"}' 1.txt

SCRIPT 2

1
2
3
4
5
6
$ awk '{min=0}
NR>= 1 { if (min> $1); min=$1}
{dee=($1-min)/8000;}
{NR==1; ts1=$3;}
{NR>=2; tsesion=(($3-ts1)/8000)}
{print dee, tsesion> "graficar.txt"}' 1.txt
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar