# Datos de entrada: un fichero de texto con los datos separados por tabulaciones # posición de los datos # 1: timeline 2:Empresa 3: evento-ini 4:evento-fin 5:Cargo 6:proyectos 7:color # Datos de salida: fichero en formato dot Alineado a las empresas BEGIN { # Tratamiento inicial del filtro: se genera la cabecera del fichero dot printf "digraph resume {charset=\"latin1\";\n" node [shape=plaintext, fontsize=36]; num_eventos=0 } { # tratamiento para cada una de las filas del fichero empresa=""; array_empresa[num_eventos]=$1 array_evento_ini[num_eventos]= $2 array_evento_fin[num_eventos]= $3 array_cargo[num_eventos]= $4 array_proyectos[num_eventos]=$5 array_color[num_eventos]=$6 num_eventos++ } END { printf "{\n" printf "node [shape=plaintext, fontsize=36];\n" cargo=array_cargo[1] printf "\"%s\"", array_cargo[1] for (i=2; i \"%s\"", array_cargo[i] cargo=array_cargo[i] } } printf ";\n" empresa="" for (i=1; i \"%s%s\";\n", last_nodo, i,nodo nodo++ printf "%s%s [ color=%s];\n",i,nodo, array_color[i] printf "%s%s [ label=%s];\n",i,nodo, array_evento_fin[i] printf "{rank=\"same\"; \"%s\";%s%s}\n", array_cargo[i] ,i, nodo printf "\"%s%s\"->\"%s%s\";\n", i,nodo-1, i,nodo last_nodo=sprintf ("%s%s",i,nodo) nodo++ } printf "}\n" }