[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Offtopic:_Expresiones_regulares,_¡ayudadme!



Buenas, a ver si te puedo ayudar en algo...

--- Javier_Viñuales_Gutiérrez <vigu@ctv.es> wrote:
> Hola y ante todo perdón por el tema pues se sale de la temática de la lista
> pero como se que aquí hay más de uno que domina el tema de las expresiones
> regulares dejo mi questión.
> 
> Veamos, necesito procesar todo un directorio de ficheros que contienen
> N líneas tal que:
> 
> etiqueta[espacios o tab]dato[espacios o tab]arg1 arg2 arg3 arg4
> 
> donde: etiqueta=[A-Z ó a-z][00-500]_[0-2000]['X' ó 'x' ó '']
>        dato=número en coma flotante (xxx.xxxxxx)
>        argi= cadenas de caracteres
>        
> y dejarlas tal que
> 
> datos[espacios o tab]resultado
> 
> con: dato=número en coma flotante del fichero de entrada
>      resultado= salida de la orden 'programa arg1 arg2 arg3 arg4'
>      

Por lo que veo el campo "etiqueta" no lo utilizas para nada ...

> Me estoy empapando en regex y lo he intentado con 'sed' pero nada no soy
> capaz y me corre cierta prisa.
> 
> ¿Podría alguien ayudarme porfavor?
> Muchas gracias.

A ver, el codigo en PHP3 (es lo que domino yo) seria mas o menos asi:

(El bucle para cada archivo y para cada linia curratelo tu)
---------
$linia_entrada = "pepe1_800X	1.1001	hola que tal" // (correcto ?)

ereg("(.*)\t(.*)\t(.*)\n", $linia_entrada, $res); // pillamos los tres campos

// Ahora en $res tenemos $res[0] (linia completa) $res[1] primer campo ... etc

// Ejecutamos el $PROGRAMA y guardamos el resultado en $salida

exec("$PROGRAMA $res[3]", $salida);

// Ya tenemos el resultado final

$linia_salida = "$reg[2]\t$salida";

---------------

Esta hecho sobre papel. Ya se que PHP3 seguramente no lo habras tocado, pero es
sencillo de entender. Falta leer del fichero entrada, hacer el bucle y escribir
en la salida, pero eso supongo que ya lo sabras hacer.

Suerte



===
.             (O)   See you, Nos vemos, Ens veiem     a8888b.
   o          <M   http://www.doneval.speedhost.com  d888888b.
  /| ......  /:M\----------------------------------- 8P"YP"Y88
(O)[]XXXXXX[]I:K+}=====< TOR NEC DONAVAM >========== 8|o||o|88
  \| ^^^^^^  \:W/----------------------------------- 8'    .88
   o          <W   Microsoft gives you Windows ...   8`._.' Y8
              (O)  Linux gives you the whole house  d/      `8b.
__________________________________________________
Do You Yahoo!?
Bid and sell for free at http://auctions.yahoo.com


Reply to: