Cátedra: Osvaldo Clua
Fecha: Primera oportunidad - Primer Cuatrimestre 2006
Día: 08/06/2006
Tema: Regular Expression
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
#!/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
#!/bin/bash sed 's_;\([^.]*\)\.\([^.]*\)\.\([^;]*\)_;\2.\3.\1_' <maestro.dat >maestro.ok exit 0