====== 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)."