Cátedra: Osvaldo Clua
Fecha: Primera oportunidad
Día: 27/05/2008
Tema: Regular Expressions, Tema 2
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:
También contamos con un archivo llamado FACTURAS.dat del que sólo sabemos lo siguiente:
IMPORTANTE: Sólo se pueden utilizar los comandos grep, sed, wc y echo
#!/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"
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