====== Examen Parcial - 75.08. Sistemas Operativos ======
**Cátedra:** Osvaldo Clua\\
**Fecha:** Primera oportunidad \\
**Día:** 27/05/2008\\
**Tema:** Regular Expressions, Tema 2
===== Enunciado =====
Se pide realizar un script que reciba por parámetro el número de cliente y muestre por salida standard el nombre del cliente, junto con las fechas y los importes de las facturas de monto mayor a $3000.01
Para esto contamos con un archivo llamado CLIENTES.dat del que sólo sabemos lo siguiente:
* Sus campos están separados por el caracter ":"
* El primer campo contiene el número de cliente
* El tercer campo contiene el nombre del cliente
* El séptimo campo contiene el cuit del cliente
También contamos con un archivo llamado FACTURAS.dat del que sólo sabemos lo siguiente:
* Sus campos están separados por el caracter ";"
* El primer campo contiene el número de cliente
* El segundo campo contiene la fecha de la factura
* El cuarto campo contiene el importe de la factura
* El sexto campo contiene la moneda de la factura
* El séptimo campo contiene el cuit del cliente
**IMPORTANTE:** Sólo se pueden utilizar los comandos grep, sed, wc y echo
===== Resolución =====
#!/bin/bash
archCli="Clientes.dat"
archFact="Facturas.dat"
numCli=$1
# Busco la linea que tiene el numero de cliente (grep)
# y almaceno el nombre (sed)
nomCli=`grep "^$numCli:" $archCli\
| sed "s/^[^:]*:[^:]*:\([^:]*\).*/\1/"`
echo "$nomCli"
# Busco (a) las facturas del cliente,
# (b) de dichas facturas, las que NO tienen importe <= 3000.01 (con grep -v)
# (c) formateo dichas lineas con sed
factsCli=`grep "^$numCli;" $archFact\
| grep -v "^[^;]*;[^;]*;[^;]*;\([12]\?[0-9]\{,3\}.[0-9]\{2\}\|3000.00\|3000.01\);.*"\
| sed "s/^[^;]*;\([^;]*\);[^;]*;\([^;]*\);.*/Fecha: \1 - Importe: \2/g"`
echo "$factsCli"
===== Archivos de Prueba =====
CLIENTES.dat
1:xxx:Jose:xxxx:xxxx:xxxx:20-13232930-1
2:xxx:Manuel:xxx:xxx:xxx:21-15123152-2
3:xxx:Juan:xxx:xxx:xxx:25-21231231-4
4:xxx:Pepe:xxx:xxx:xxx:20-12323423-5
5:xxx:Emmet Brown:xxx:xxx:xxx:27-33232123-1
FACTURAS.dat
1;27/11/1987;xxxx;1282.12;xxx;ARS;20-13232930-1
2;01/05/1990;xxxx;5172.25;xxx;ARS;21-15123152-2
1;11/12/1989;xxxx;3282.51;xxx;ARS;20-13232930-1
4;15/07/1995;xxxx;9827.12;xxx;ARG;20-12323423-5
5;15/07/1992;xxxx;3827.12;xxx;ARG;27-33232123-1
1;05/06/1988;xxxx;4812.13;xxx;USD;20-13232930-1
2;01/05/1990;xxxx;1972.25;xxx;ARS;21-15123152-2
1;21/08/1992;xxxx;5172.25;xxx;ARS;20-13232930-1
2;15/05/1991;xxxx;3000.25;xxx;ARS;21-15123152-2
2;18/10/1983;xxxx;1113.25;xxx;ARS;21-15123152-2
4;15/07/1991;xxxx;3000.01;xxx;SPE;20-12323423-5
4;15/07/1992;xxxx;3000.00;xxx;ARS;20-12323423-5
5;15/07/1992;xxxx;3827.12;xxx;ARG;27-33232123-1
3;15/07/1992;xxxx;3827.12;xxx;ARG;25-21231231-4