====== Examen Parcial - 75.08. Sistemas Operativos ======
**Cátedra:** Osvaldo Clua\\
**Fecha:** Primera oportunidad - Primer Cuatrimestre 2006\\
**Día:** 08/06/2006\\
**Tema:** Regular Expression
Esta página está incompleta; podés ayudar completando el material.
===== Enunciado =====
El archivo llamado MAESTRO.dat posee el siguiente formato:\\
Almacen;rack.nivel.columna;material;cantidad;udm;dueño
Los campos están separados por ";"\\
Donde:
* Almacén: Nombre del depósito donde se encuentra el material.
* Rack.Nivel.Columna: Este campo contiene la direccion fisica del material, que se define por 3 especies de coordenadas separadas por el caracter "."
* Material: Nombre del material que se almacena.
* Cantidad: Cuanto material se almacena. Este campo tiene como separador decimal el caracter "."
* Udm: Unidad de Medida en que se expresa la Cantidad
* Dueño: Cliente al que pertenence el material.
Ejemplo de registros (*)\\
//Deposito Pte Avellaneda;09.02.03;AK04;8883.3;Kg;AJ04//\\
//Deposito Solis 1793;09.02.03;03OWer;83.3;Kg;VEM2B//\\
//Almacen Caballito-3;09.02.03;AK04;4;Litros;Moreno//\\
(*)Este ejemplo es a modo ilustrativo y de ninguna manera representa la totalidad de casos posibles
Ocurrio un error durante la generacion del archivo MAESTRO.dat resultando lo siguiente:
* La informacion existente en el subcampo "rack" en realidad es la correspondiente al subcampo "columna".
* La informacion existente en el subcampo "nivel" en realidad es la correspondiente al subcampos "rack".
* La informacion existente en el subcampo "columna" en realidad es la correspondiente al subcampo "nivel"
Se pide generar el archivo MAESTRO.ok con la correción del error anteriormente descripto
**Importante:** Solo se puede utilizar el comando sed
===== Resolución =====
#!/bin/bash
# Estado actual: Alamacen;Columna.Rack.Nivel;Material;Cantidad;UDM;Dueno
# Quiero pasar a: Alamacen;Rack.Nivel.Columna;Material;Cantidad;UDM;Dueno
INPUT="MAESTRO.dat"
OUTPUT="MAESTRO.OK"
almacen="[A-Za-z0-9]*"
coordenada="[0-9]*"
# Numero los matcheos de cada parte con "\(" y "\)" para después ordenarlos como los necesito
sed "s/\($almacen\;\)\($coordenada\)\.\($coordenada\)\.\($coordenada\)/\1\3\.\4\.\2/" < $INPUT > $OUTPUT
===== Otra Resolución ====
#!/bin/bash
sed 's_;\([^.]*\)\.\([^.]*\)\.\([^;]*\)_;\2.\3.\1_' maestro.ok
exit 0