12
Tarea 2. Uso de AWK Tarea 3.Uso de SED Diana Cobos Zaleta

Tarea 2 y_3

Embed Size (px)

DESCRIPTION

uso de AWK y SED

Citation preview

Page 1: Tarea 2 y_3

Tarea 2. Uso de AWKTarea 3.Uso de SED

Diana Cobos Zaleta

Page 2: Tarea 2 y_3

Se desea extraer información de un archivo

tipo LST que se genera al correr el programa GAMS, y contiene demasiada información.

Lo que se desea obtener son los siguientes resultados: Status del solver Status del modelo Valor de la función objetivo Mejor valor obtenido Gaps absoluto y relativo:

Objetivo del programa ultimo.sh

Page 3: Tarea 2 y_3

El programa necesita saber el nombre del

archivo que utilizara, como son 5 instancias parecidas de un total de 4 tipos, esto se automatizara con la ayuda del uso de BASH.

El resultado obtenido se re direcciona a los archivos que llevaran el prefijo res_nombre_de_la_instancia.txt

El nombre del archivo BASH creado es ultimo.sh No olvides dar permiso de escritura antes de

ejecutarlo.

Parámetros necesarios

Page 4: Tarea 2 y_3

El programa pedirá el numero de unidades

básicas y con eso genera el nombre de la instancoa y ejecuta el for dentro del bash.

Antes de ejecutar ultimo.sh

Page 5: Tarea 2 y_3

Ejecutando ultimo.sh

Page 6: Tarea 2 y_3

#!/bin/bash echo "numero de unidades basicas: " read v=$REPLY for i in 1 2 3 4 5; do if [ $v -eq "20" ] then for j in 2 3; do awk 'BEGIN {print "R E S U L T A D O S \n"} $1 == "****" && $3 == "STATUS" {print $2,$3,":",$5,$6,$7} $2 == "OBJECTIVE" {print

$2,$3,$4} $1 == "MIP" && $2 == "status" {print $0} $1 == "Best" {print $0, "\nLos GAP absolutos y relativos son:"} $2 ~ /gap:$/ {print $0} END {print "--------------fin----------------"}' $"weee_"$v"_"$j"_"$i"_cplex_opt.lst" > "res_weee_"$v"_"$j"_"$i"_cplex_opt.txt"

done elif [ $v -eq "40" ]; then for j in 3 4; do awk 'BEGIN {print "R E S U L T A D O S \n"} $1 == "****" && $3 == "STATUS" {print $2,$3,":",$5,$6,$7} $2 == "OBJECTIVE" {print

$2,$3,$4} $1 == "MIP" && $2 == "status" {print $0} $1 == "Best" {print $0, "\nLos GAP absolutos y relativos son:"} $2 ~ /gap:$/ {print $0} END {print "--------------fin----------------"}' $"weee_"$v"_"$j"_"$i"_cplex_opt.lst" > "res_weee_"$v"_"$j"_"$i"_cplex_opt.txt"

done else echo "Solo hay instancias con 20 y 40 nodos" break fi echo "Finalizado con $v unidades basicas" done

Programa ultimo.sh

Page 7: Tarea 2 y_3

El formato del archivo de salida es el siguinete: Emacs res_weee_40_3_2_cplex_opt:

R E S U L T A D O S

SOLVER STATUS : RESOURCE INTERRUPTMODEL STATUS : INTEGER SOLUTIONOBJECTIVE VALUE 0.8000Best possible: 9.400000Los GAP absolutos y relativos son:Absolute gap: 8.600000Relative gap: 10.750000--------------fin----------------

Archivo de salida

Page 8: Tarea 2 y_3

Se desea obtener la siguiente información de

un archivo tipo LST

Estatus del solver Estatus del modelo Valor del gap (fijado por usuario en GAMS) Gap Absoluto Gap Relativo

Objetivo del programa

intento_sed.sh

Page 9: Tarea 2 y_3

El programa pide al usuario la cantidad de

unidades básicas (solo hay instancias de 20 y 40 nodos). Se ayudara con una automatización hecha con BASH.

El resultado obtenido se re direcciona a los archivos que llevaran el nombre: obtenido_NumNodos_Param_instancia

El nombre del archivo BASH creado es intento_sed.sh

No olvides dar permiso de escritura antes de ejecutarlo.

Parámetros necesarios

Page 10: Tarea 2 y_3
Page 11: Tarea 2 y_3

#!/bin/bash echo "numero de unidades basicas: " read v=$REPLY for i in 1 2 3 4 5; do if [ $v -eq "20" ]; then for j in 2 3; do sed -n -e '/STATUS/p' -e '/gap/p' "weee_"$v"_"$j"_"$i"_cplex_opt.lst" > "obtenido_"$v"_"$j"_"$i done elif [ $v -eq "40" ]; then for j in 3 4; do sed -n -e '/STATUS/p' -e '/gap/p' "weee_"$v"_"$j"_"$i"_cplex_opt.lst" > "obtenido_"$v"_"$j"_"$i done else echo "Solo hay instancias con 20 y 40 nodos" break fi echo "Finalizado con $v unidades basicas" done

Programa intento_sed.sh

Page 12: Tarea 2 y_3

El formato del archivo d¿es el siguinete: Emacs obtenido_20_3_5: **** SOLVER STATUS 1 NORMAL COMPLETION**** MODEL STATUS 1 OPTIMAL>> epgap 0.0001Absolute gap: 0.000000Relative gap: 0.000000

Archivo de salida