Upload
diana-cobos
View
513
Download
4
Embed Size (px)
DESCRIPTION
uso de AWK y SED
Citation preview
Tarea 2. Uso de AWKTarea 3.Uso de SED
Diana Cobos Zaleta
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
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
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
Ejecutando ultimo.sh
#!/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
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
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
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
#!/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
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