====== Examen Parcial - 75.08. Sistemas Operativos ======
**Cátedra:** Osvaldo Clua\\
**Fecha:** Primer Oportunidad \\
**Día:** 03/11/2009\\
**Tema:** Regular Expressions (tema 1)
===== Enunciado =====
Una empresa de servicios públicos requiere que hagamos un script que muestre por salida standard cuántos técnicos pueden realizar una tarea en el domicilio de un cliente en un día determinado.\\
Solo está permitido utilizar los comandos grep, sed, vi, echo, wc\\
\\
Ejemplo de ejecución:\\
>script.sh AVELLANEDA JUEVES
Pueden realizar un tarea en AVELLANEDA un JUEVES: 3 técnicos
\\
Toda la información necesaria se encuentra en un archivo con el siguiente formato:\\
DATOS.dat\\
−− Información 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_DE_ENTRADA: Hora de entrada con formato HH:MI:SS\\
HORA_DE_SALIDA: Hora de salida con formato HH:MI:SS\\
−− Información de los técnicos\\
NOMBRE_TECNICO: Nombre completo\\
LOCALIDAD: Nombre de la localidad donde realiza su trabajo\\
\\
Lo curioso es que el separador de campo de la información de los turnos es ';', el separador de la información de los técnicos es ':' y la separación entre la información de turnos y la de técnicos es '_'\\
Ejemplo\\
1;LUNES,MARTES,MIERCOLES,VIERNES,SABADO;08:00;14:00_Ricardo_Rodriguez:MORON\\
===== Resolución =====
Consideraciones:
- Solo uso la información de los separadores (y los parámetros del script); no miro que el registro contenga "días válidos", "horarios válidos", etc.
#!/bin/bash
if [ $# -ne 2 ]; then
# mostrar uso
exit 2
fi
count=`grep -c "^[^;]*;[^;]*$2[^;]*;[^_]*_[^:]:$1" DATOS.dat`
# Comentarios de esta linea:
# En [^_]* podría tener campos de más... no lo valido
# En [^;]*;[^_]* ... esto podría haber sido: [^_]* directamente en vez de [^;]*;[^_]* pero fallaría
# en el caso que un día tenga "_" en su nombre.
# Es decir busco:
# codigoRegistro;posiblesDiasMIDIAposiblesDias;loQueSea_loQueSea:MILOCALIDAD
# "no ;" "no ;" "no ;" "no _" "no :"
echo "Pueden realizar una tarea en $1 un $2: $count tecnicos"
exit 0
===== Discusión =====
Si ves algo que te parece incorrecto en la resolución y no te animás a cambiarlo, dejá tu comentario acá.