Tabla de Contenidos

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:

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:

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.dat >maestro.ok
exit 0