problemas con fichero

Imagen de rubenpot
0 puntos

Hola!

Tengo un fichero en el que hay lineas repetidas de esta forma:

Ejemplo.txt contiene:

    pepe

    juan

    pablo

    pepe

    juan

    pedro

Y necesito obtener esto:

 2 pepe

 2 juan

 1 pablo

 1 pedro

 

Es decir el numero de apariciones de cada linea

He probado con uniq pero no he tenido exito ¿Alguna sugerencia?

Un saludo! 

 

 

 

Imagen de LUIS1717
+1
0
-1

probate este programita, yo lo llame programa.pl

unless($#ARGV){
open(IN,"<$ARGV[0]") or die $!;
}else{
print STDERR "Debe dar un nombre de archivo, y solo uno!\n";
}

while(<IN>){
chomp;
/\s+(\w+)/;
$cuenta{"$1"}++ unless $1 eq "";
}

foreach $llave (sort keys %cuenta) {
print "$cuenta{$llave} $llave\n";
}

y si tu archivo que tenes que procesar se llama ejemplo.txt llama al programa con el comando

 

perl programa.pl ejemplo.txt

espero que te sirva, saludos

+1
0
-1
Imagen de LUIS1717
+1
0
-1

disculpa me olvide de cambiar algo en la primera linea, el codigo sería

 

 
if($#ARGV==0){
    open(IN,"<$ARGV[0]") or die $!;
}else{
    print STDERR "Debe dar un nombre de archivo, y solo uno!\n";
}

while(<IN>){
    chomp;
    /\s+(\w+)/;
    $cuenta{"$1"}++ unless $1 eq "";
}

foreach $llave (sort keys %cuenta) {
    print "$cuenta{$llave} $llave\n";
}

saludos, espero que ayude

+1
0
-1
Imagen de LUIS1717
+1
0
-1

if($#ARGV==0){
    open(IN,"<$ARGV[0]") or die $!;
}else{
    print STDERR "Debe dar un nombre de archivo, y solo uno!\n";
}

while(<IN>){
    chomp;
    $cuenta{"$1"}++ if /\s+(\w+)/;
}

foreach $llave (keys %cuenta) {
    print "$cuenta{$llave} $llave\n";
}

+1
0
-1
Imagen de LUIS1717
+1
0
-1

if($#ARGV==0){
    open(IN,"<$ARGV[0]") or die $!;
}else{
    print STDERR "Debe dar un nombre de archivo, y solo uno!\n";
}

while(<IN>){
    chomp;
    $cuenta{"$1"}++ if /\s*(\w+)/;
}

foreach $llave (keys %cuenta) {
    print "$cuenta{$llave} $llave\n";
}

+1
0
-1