Examen Parcial - 75.08. Sistemas Operativos [Foros-FIUBA::Wiki]
 

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:

  1. 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á.
materias/75/08/parcial_20091103_1regexp.txt · Última modificación: 2009/11/19 01:22 por feder77
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 3.0 Unported


Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki