====== Examen Parcial - 75.08. Sistemas Operativos ====== **Cátedra:** Osvaldo Clua\\ **Fecha:** Segunda oportunidad \\ **Día:** 24/05/2005\\ **Tema:** Regular Expression Esta página está incompleta; podés ayudar completando el material. ===== Enunciado ===== Una empresa de servicios públicos requiere que hagamos un script que muestre por slaida standard cuántos técnicos pueden realizar una tarea en el domicilio de un cliente en un día determinado. Sólo está permitido utilizar los comandos grep, sed, vi, echo y wc Para facilitar las cosas el script recibe como parámetro la localidad y el nombre del día de la semana Ejemplo de ejecución:\\ \>script.sh AVELLANEDA JUEVES Pueden realizar una tarea en AVELLANDEA un JUEVES: 3 técnicos. Toda la información necesaria se encuentra en un archivo con el siguiente formato:\\ DATOS.dat\\ --Informacion de los turnos de trabajo\\\ NRO_TURNO:identificador de turno\\ DIAS_DE_SEMANA:Lista con los nombres de los días de la semana separados por ","\\ HORA_ENTRADA:Hora de entrada con formato HH:MM\\ HORA_SALIDA:Hora de salida con formato HH:MM\\ --Informacion de los tecnicos\\ NOMBRE_TECNICO:Nombre completo\\ LOCALIDAD:Nombre de la localidad donde realiza su trabajo Lo curioso es que el separador de campo de la informacion de los turnos es ";" y el separador de la informacion de os tecnicos es ":" y la separacion entre la informacion de turnos y de tecnicos es "_" ==== Ejemplo ==== 1;LUNES,MARTES,MIERCOLES,VIERNES,SABADO;08:00;14:00_Ricardo Rodriguez:MORON ===== Resolución ===== DATOS="DATOS.dat" if [ $# -ne 2 ] then echo "Debe especificar la zona y el dia" exit 1 fi zona=$1 dia=$2 #id;dias;inicio;fin_nombre:zona cantidad=`sed 's/[0-9]*\;\([A-Z,]*\)\;.*\:\([a-zA-Z]*\)/\1:\2/g' $DATOS | grep -c .*$dia.*:$zona` echo "Pueden realizar una tarea en $zona un $dia: $cantidad tecnicos." ===== Otra Resolución ==== #!/bin/bash # pedir por parámetro lo siguiente¸ como se hace en la resolución anterior: ZONA=MORON DIA=SABADO CANT=`grep -c ';.*'$DIA'[^;]*;[^_]*_.*:'"$ZONA" datos.dat` echo "Pueden realizar una tarea en $ZONA un $DIA: $CANT técnico(s)."