[eside-ghost] Procesar un archivo de texto

Álvaro Uría (Fermat) fermat en movimage.com
Vie Ago 27 12:31:12 CEST 2004


-----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-----


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