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: