Cátedra: Osvaldo Clua
Fecha: Segunda oportunidad
Día: 24/05/2005
Tema: Regular Expression
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 “_”
1;LUNES,MARTES,MIERCOLES,VIERNES,SABADO;08:00;14:00_Ricardo Rodriguez:MORON
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."
#!/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)."