[eside-ghost] Procesar un archivo de texto

DAVID RODRIGUEZ TORRONTEGUI dajon en euskalnet.net
Vie Ago 27 13:17:33 CEST 2004


Aupa,

Con Ksh venia a decir Korn Shell, muchas gracias por el script !!! sale 
perfecto lo unico tenco una dudilla, si el archivo origen tiene 4 
registros de 12 caracteres el tamaño deberia ser 12*4=48 bytes, no? 
pues mi archivo ocupa 49, bueno no se dudas que tiene uno.

gracias y un saludo

David Rodriguez Torrontegui

dajon en euskalnet.net

----- Mensaje Original -----
De: =C1lvaro_Ur=EDa (Fermat) <fermat en movimage.com>
Fecha: Viernes, Agosto 27, 2004 12:31 am
Asunto: Re: [eside-ghost] Procesar un archivo de texto

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Aupa David,
> 
> El Fri, 27 Aug 2004 11:19:31 +0200,
> DAVID RODRIGUEZ TORRONTEGUI escribió:
> 
> // Aupa,
> // 
> // Muchas gracias por la respuesta pero la maquina AIX 4.3 no 
> tiene 
> // instalado el perl, jeje la solución no me valdría, pero me temo 
> que 
> // habría que hacer un script parecido en ksh que con el awk solo 
> no 
> // valdría.
> 
> No tengo (ni idea de) ksh (instalado), pero por si es algo 
> parecido a
> hacerlo en awk, sería:
> 
> $ cat fichero
> 269300001234269000000011593000000000269300004567
> $ cat fichero | awk '{for(n=1; n<=length($0);n+=12){c=substr($0,n,12);
> if(c~/^2693/) printf c}}'
> 269300001234269300004567
> 
> // De todas formas y si no es abusar, es que no tengo ni papa de 
> perl, me 
> // tocara algun dia pero de momento... me podrías explicar un poco 
> el 
> // script.
> 
> Sí, sí.. que ayer contesté deprisa xq me iba.. :S
> 
> // 
> // perl -we 'while(<>){chomp;foreach (/\d{1,12}/gs){print 
> if(/^2693/)}}// print"\n"'
> // 
> 
> Si lo separamos en varias líneas,
> >>>
> 	while (<>){	# es lo mismo que poner while(<STDIN>)
> 	                # es ir cogiendo línea por línea todo lo que 
viene
> 	                # por la entrada estándar
> 	        chomp;	# quitamos el '\n' final (es lo mismo que chomp
($_);)
> 	        foreach (/\d{1,12}/gs){	# si coinciden 12 caracteres
> 	                                # numéricos, lo pasamos a la
> 	                                # variable $_ (que representa el
> 	                                # último dato que llegó)
> 	                                # SE HACE de forma RECURSIVA (al
> 	                                # poner 'g' se lo decimos)
> 	                                # La 's' en /gs es para pasar 
por
> 	                                # encima de los '\n', aunque en
> 	                                # este caso podríamos quitarlo
> 	                print if(/^2693/) # Mira si $_ empieza 
por '2693' y
> 	                                  # si es así, escribe $_ por
> 	                                  # pantalla.
> 	                                  # 'print;' es lo mismo que
> 	                                  # 'print $_;'
> 	        }
> 	}
> 	print "\n";	# salto de línea :O
> <<<
> 
> // Un saludo y gracias por la ayuda.
> 
> No hay de qué ;-)
> 
> <salu2/>
> - -- 
>  ,--.
> |  oo| wget -O - fermat.movimage.com/fermat.asc | gpg --import
> |  ~~| Key FingerPrint = 02C3 E5E5 2283 D08F 506C  3070 4713 40EF 
> 21C5 21E2
> |/\/\|
>     |_[#] No hay cosa más satisfactoria que el que alguien te 
> dispare, y falle.
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.2.5 (GNU/Linux)
> 
> iD8DBQFBLw1wRxNA7yHFIeIRAqaJAJ42+EX6E4KxVijmg+KRY+CJffZ9dQCfaaZy
> QfRX1mIvRiImc7PfJG4gdKo=
> =j4iW
> -----END PGP SIGNATURE-----
> 
------------ próxima parte ------------
_______________________________________________
eside-ghost mailing list
eside-ghost en deusto.es
https://listas.deusto.es/mailman/listinfo/eside-ghost


Más información sobre la lista de distribución eside-ghost