• Publicidad

Ayuda, ordenando lista de palabras

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Ayuda, ordenando lista de palabras

Notapor Zeokat » 2006-08-22 08:22 @390

A ver, no tengo ni idea de perl... y se que es echar un pocode morro y venir aqui y decir ala hazme este script en perl... pero esque me parece q es muy sencillo, lo que pasa esque yo no tengo ni idea de perl ni de otro lenguage de programacion.

Lo que quiero hacer es lo siguiente, yo tengo una lista de palabras en un fichero txt, en el siguiente formato

s_palabra
d_palabra
r_palabra
w_palabra
.........etc....

y lo que quiero es ordenar esta lista alfabeticamente

d_palabra
r_palabra
s_palabra
w_palabra
.........etc....

y a mayores lo que necesito es quitar palabras duplicadas, es decir si hay una palabra que se repite n veces dejarla en la lista 1 sola vez (aunque weno, con lo primero de ordenar la lista ya me conformo)

Otra cosa atener en cuenta esque las listas con las que trabajo son de un tamaño considerable entre 1,5 GB y 2,5 GB , y tengo una utilidad para windows pero no me soporta listas tan grandes, se me qda pillao "Out of memory" y tengo entendido que con perl se puede trabajar con ficheros grandes sin problema.

No penseis que no me moleste en buscar, si que busque ahi al final http://kataix.umag.cl/~mmarin/topinf/cl ... /c13c.html habla de algo de ordenar la lista con el parametro "sort" .... pero con mi nivel de perl estoy listo si quiero entender algo...


Si alguien me puede echar un cable, pos de maravilla porque la verdad esque necesito ordenar estas listas como sea... si alguien tiene otra idea para ordenar listas de ese tamaño tambien es bienvenida.

Gracias de antemano. :wink:
Zeokat
Perlero nuevo
Perlero nuevo
 
Mensajes: 125
Registrado: 2006-08-22 08:08 @380

Publicidad

Notapor explorer » 2006-08-22 11:07 @505

Hola, Zeokat. Bienvenido al foro.

Si estuvieras en Linux en vez de Windows, sólo tendrías que ejecutar el comando siguiente para obtener lo que quieres:
Código: Seleccionar todo
sort fichero.txt|uniq
es decir, ejecutamos el comando sort sobre el fichero y luego lo entubamos al comando uniq para que nos quite las repeticiones.

Pero... como usas Windows la solución es más complicada (¿Por qué la gente se empeña en usar cosas complicadas?)

Yo usaría el módulo File::Sort, que ya tiene en cuenta los casos de ficheros enormes:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/bin/perl
use File::Sort qw(sort_file);
sort_file({
    I => 'fichero_desordenado.txt',
    o => 'fichero_ordenado.txt',
    u => 1,                          # Líneas únicas
  });
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2006-08-27 22:25 @975, editado 3 veces en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Zeokat » 2006-08-22 11:43 @530

No es sólo la primera letra jejeje... puse eso... como ejemplo para que se entendiera nada mas... de todas formas mil gracias voy a ver que puedo hacer... ah y gracias por la recomendacion de linux esa fue la que me comentaron inicialmente pero al buscar ayuda sobre ese comando hablaban de perl y que el comando sort era mas flexible y moderno y no se que historias mas... por eso vien hasta aqui.

De todas maneras te estoy muy agradecido... a ver si por fin consigo ordenar estas malditas listas. Me has ahorrado horas de silla jejej Gracias explorer


*****Vaya no me anda esto***
A ver esque soy un poco torpe jeje... lo que hice pos fue cojer el codigo que pusiste en perl y lo puse en u narchivo txt , le cambie la extension a pl y lo ejecuto esde la consola de comandos "cmd" de windows.

Pero al ejecutarlo me dewelve un error:



Código: Seleccionar todo
Can't locate File/Sort.pm in @INC (@INC contains: C:/Perl/lib C:/Perl/site/lib .
) at C:\sort.pl line 2.
BEGIN failed--compilation aborted at C:\sort.pl line 2.



Estoy usando windows y tengo perl instalado en la carpeta c:\perl mmm... alguna manera de solucionar eso?

El script que lo usaria de lasiguiente forma...?

script.pl entrada_desordenada.txt salida_ordenada.txt
Zeokat
Perlero nuevo
Perlero nuevo
 
Mensajes: 125
Registrado: 2006-08-22 08:08 @380

Notapor explorer » 2006-08-22 11:55 @538

El error indica que no has instalado ese módulo. ¿Qué distribución de Perl estás usando en Windows?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Zeokat » 2006-08-22 12:00 @541

Pos me puse el active perl.. l obaje de aqui..

http://www.activestate.com/Products/ActivePerl/ en la ultima version ActivePerl 5.8.8.817

Alguna manera de añadir ese modulo... o de donde encuentro el perl para mi win con ese modulo?
Zeokat
Perlero nuevo
Perlero nuevo
 
Mensajes: 125
Registrado: 2006-08-22 08:08 @380

Notapor danimera » 2006-08-22 12:08 @547

De hecho no tienes instalado el modulo lo puedes descargar de:

http://search.cpan.org/~cnandor/File-Sort-1.01/Sort.pm

Y copias el archivo .pm en el directorio:

C:/Perl/lib y C:/Perl/site/lib . dentro de las carpetas FILE
asi deberia correrte perfectamente

Lo que te hara el organizar en forma alfabeticamente y como la primera letra de la linea es diferente para todas, entonces el evalua a partir de ahi, si se repiten evalua cada letra seguiente indicando cual es la mayor
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Notapor Zeokat » 2006-08-22 12:13 @551

Baje el modulo pero nada... esto me pone el mismo error. :oops:
Zeokat
Perlero nuevo
Perlero nuevo
 
Mensajes: 125
Registrado: 2006-08-22 08:08 @380

Notapor danimera » 2006-08-22 12:17 @553

Denes de instalar el modulo lo copias en C:/Perl/site/lib/FILE y/o en C:/Perl/lib/FILE

Si lo descargas debe de instalarlo bien, no deberia salirte ese error,
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Notapor Zeokat » 2006-08-22 12:20 @555

Cierto amigo... estaba haciendolo mal.. ahora ya no me pone ese error, voy a ver q tal funciona el programita.

Asias!
Zeokat
Perlero nuevo
Perlero nuevo
 
Mensajes: 125
Registrado: 2006-08-22 08:08 @380

Notapor danimera » 2006-08-22 12:21 @556

Denes de instalar el modulo lo copias en C:/Perl/site/lib/FILE y/o en C:/Perl/lib/FILE

Si lo descargas debe de instalarlo bien, no deberia salirte ese error,
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado