Campos repetidos

Salvador Ortiz Garcia sog@msg.com.mx
Tue, 10 Mar 1998 17:22:26 -0600 (CST)


On Mon, 9 Mar 1998, Adrian Galindo wrote:

> Tengo un archivo de entrada de la siguiente manera:
> 
> AAPG BULL::0149-1423::ENERGY & FUELS
> AAPG BULL::0149-1423::ENGINEERING, PETROLEUM
> AAPG BULL::0149-1423::GEOSCIENCES
> ACI MATER J::0889-325X::CONSTRUCTION & BUILDING TECHNOLOGY
> ACI MATER J::0889-325X::MATERIALS SCIENCE
>  
> Lo que no le hallo es como poder seguir el hilo de los que son iguales,

Ya otros compañeros de la lista han posteado posibles soluciones a tu
problema, pero se me ocurrió una solución general que contempla el caso en
que los registros con inicio igual no sean contiguos, y como creo que es
un caso interesante del uso de hashes lo posteo (requiere perl5):


#!/usr/bin/perl
while(<ARGV>) { # Lee entrada estandar o archivo en parametros
	chomp;
	($uno,$dos,$tres) = split('::');
	push @{$bas{"$uno\:\:$dos"}},$tres; 
}
$" = '%'; # Separador en impresión de arreglos
for(keys %bas) {
	print "${_}::@{$bas{$_}}\n";
}


La magia consiste en crear una llave en un hash con cada inicio igual,
en que el valor del hash es un arreglo de los últimos campos.

Saludos.

Salvador Ortiz