Re: Data managing problem
by BrowserUk (Patriarch) on Feb 22, 2013 at 07:27 UTC
|
C:\test>perl -anle"$h{ $F[1] } = $_; }{ print for values %h"
1/2/2013 cgoo nreuiheru
1/4/2013 doow reiqrqueih
1/5/2013 hellio ruieqrhfuepqh
1/20/2013 cgoo 3rhquh4ureyh
1/30/2013 yetil jerqohgqrij
2/13/2013 hellio rueqipheruh
2/14/2013 cgoo wehrig4r74378
^Z
1/30/2013 yetil jerqohgqrij
1/4/2013 doow reiqrqueih
2/13/2013 hellio rueqipheruh
2/14/2013 cgoo wehrig4r74378
If you need to retain the ordering it is a little more complicated: C:\test>perl -anle"$h{ $F[1] } = sprintf qq[%05u%s], $., $_; }{ print
+substr $_, 5 for sort values %h"
1/2/2013 cgoo nreuiheru
1/4/2013 doow reiqrqueih
1/5/2013 hellio ruieqrhfuepqh
1/20/2013 cgoo 3rhquh4ureyh
1/30/2013 yetil jerqohgqrij
2/13/2013 hellio rueqipheruh
2/14/2013 cgoo wehrig4r74378
^Z
1/4/2013 doow reiqrqueih
1/30/2013 yetil jerqohgqrij
2/13/2013 hellio rueqipheruh
2/14/2013 cgoo wehrig4r74378
With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
| [reply] [d/l] [select] |
|
|
>perl -anle"$h{ $F[1] } = $_; }{ print for values %h"
I understood that about the implicit split and the -loctnum after reading this ( which is awesome by the way )
>perl -anle"$h{ $F[1] } = sprintf qq[%05u%s], $., $_; }{ print substr $_, 5 for sort values %h"
I have been searching around for a bit and I simply dont get that - could you explain that one please?
| [reply] [d/l] [select] |
|
|
| [reply] [d/l] [select] |
|
|
|
|
|
|
|
see perlrun for most recent version
| [reply] |
|
|
|
|
perl -anle"$h{ $F[1] } = $_; }{ print for values %h"
Dosnt work for me!
~$ perl -anle"$h{ $F[1] } = $_; }{ print for values %h"
syntax error at -e line 1, near "} ="
Execution of -e aborted due to compilation errors.
Summary of my perl5 (revision 5 version 14 subversion 2) configuration:
Platform:
osname=linux, osvers=3.2.0-23-generic, archname=x86_64-linux-gnu-thread-multi
uname='linux komainu 3.2.0-23-generic #36-ubuntu smp tue apr 10 20:39:51 utc 2012 x86_64 x86_64 x86_64 gnulinux '
| [reply] [d/l] [select] |
|
|
| [reply] |
|
|
Re: Data managing problem
by vinoth.ree (Monsignor) on Feb 22, 2013 at 07:29 UTC
|
Use hash and save each line with the second field as key of each record. So you will get the latest record if the key get duplicated.
use strict;
use warnings;
use Data::Dumper;
use utf8;
my %hash ;
while(<DATA>)
{
my @arr = split(/\s+/, $_);
$hash{$arr[1]}= $_;
}
print Dumper \%hash;
__DATA__
1/2/2013 cgoo nreuiheru
1/4/2013 doow reiqrqueih
1/5/2013 hellio ruieqrhfuepqh
1/20/2013 cgoo 3rhquh4ureyh
1/30/2013 yetil jerqohgqrij
2/13/2013 hellio rueqipheruh
2/14/2013 cgoo wehrig4r74378
| [reply] [d/l] |
Re: Data managing problem
by tmharish (Friar) on Feb 22, 2013 at 07:34 UTC
|
use strict ;
use warnings ;
my @clean_data ;
my %track_hash ;
while( <DATA> ) {
my $line = $_ ;
chomp( $line ) ;
my ( $date, $word_to_uniq, $other_word ) = split( /\s+/, $line ) ;
next unless( $date and $word_to_uniq and $other_word ) ;
if( defined( $track_hash{ $word_to_uniq } ) ) {
delete( $clean_data[ $track_hash{ $word_to_uniq } ] ) ;
}
push @clean_data, $line ;
$track_hash{ $word_to_uniq } = $#clean_data ;
}
@clean_data = map( { ( $_ ) ? $_ : () } @clean_data ) ;
foreach ( @clean_data ) {
print "$_\n";
}
__DATA__
1/2/2013 cgoo nreuiheru
1/4/2013 doow reiqrqueih
1/5/2013 hellio ruieqrhfuepqh
1/20/2013 cgoo 3rhquh4ureyh
1/30/2013 yetil jerqohgqrij
2/13/2013 hellio rueqipheruh
2/14/2013 cgoo wehrig4r74378
| [reply] [d/l] |
|
|
use strict ;
use warnings ;
my @clean_data ;
my %track_hash ;
while( <DATA> ) {
s/\s+$// ;
my $to_track ;
( $to_track = ( split( /\s+/ ) )[1] ) ? push( @clean_data, $_ ) :
+next ;
delete( $clean_data[ $track_hash{ $to_track } ] ) if( defined( $tr
+ack_hash{ $to_track } ) ) ;
$track_hash{ $to_track } = $#clean_data ;
}
@clean_data = map( { ( $_ ) ? $_ : () } @clean_data ) ;
foreach ( @clean_data ) {
print "$_\n";
}
__DATA__
1/2/2013 cgoo nreuiheru
1/4/2013 doow reiqrqueih
1/5/2013 hellio ruieqrhfuepqh
1/20/2013 cgoo 3rhquh4ureyh
1/30/2013 yetil jerqohgqrij
2/13/2013 hellio rueqipheruh
2/14/2013 cgoo wehrig4r74378
| [reply] [d/l] |
Re: Data managing problem
by manorhce (Beadle) on Feb 22, 2013 at 07:37 UTC
|
Thanks a lot that worked for me, For which I like more more and more PerlMonk
| [reply] |