Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Swapping names of list while keeping the contents as it is.

by zing (Beadle)
on Aug 30, 2012 at 18:25 UTC ( [id://990815]=perlquestion: print w/replies, xml ) Need Help??

zing has asked for the wisdom of the Perl Monks concerning the following question:

Hi all, I have a list like this(jay-bob)..
LIST.txt jay 21 34 56 bob 12 39 jay 11 10 bob 14 jay 190 bob 13
I want names to be swapped while keeping the numbers untouched(i.e. in the same rows as they were), bob-jay....
bob 21 34 56 jay 12 39 bob 11 10 jay 14 bob 190 jay 13
What I tried, but aint the complete solution  cut -f2- -d ' ' list.txt | awk '{print "Jay " $0}'

Replies are listed 'Best First'.
Re: Swapping names of list while keeping the contents as it is.
by philiprbrenan (Monk) on Aug 30, 2012 at 18:32 UTC

    Try:

    use feature ":5.14"; use warnings FATAL => qw(all); use strict; for(split /\n/, << 'END') jay 21 34 56 bob 12 39 jay 11 10 bob 14 jay 190 bob 13 END {s/jay/bob/ or s/bob/jay/; say }

    Produces

    bob 21 34 56
    jay 12 39
    bob 11 10
    jay 14
    bob 190
    jay 13
    
Re: Swapping names of list while keeping the contents as it is.
by johngg (Canon) on Aug 30, 2012 at 22:13 UTC

    Another method that reads the data in paragraph mode, splits into first element and remaining elements within lines in one map then swaps the first elements of the two lines and rejoins things up in a second, finally joining the pairs of lines into paragraphs again.

    $ perl -Mstrict -Mwarnings -E ' > open my $fh, q{<}, \ <<EOF or die $!; > jay 21 34 56 > bob 12 39 > > jay 11 10 > bob 14 > > jay 190 > bob 13 > EOF > > say join qq{\n\n}, do { > local $/ = q{}; > map { > ( $_->[ 0 ]->[ 0 ], $_->[ 1 ]->[ 0 ] ) > = > ( $_->[ 1 ]->[ 0 ], $_->[ 0 ]->[ 0 ] ); > join qq{\n}, map { join q{ }, @$_ } @$_; > } > map { > chomp; > [ map { [ split m{\s}, $_, 2 ] } split m{\n} ]; > } > <$fh>; > };' bob 21 34 56 jay 12 39 bob 11 10 jay 14 bob 190 jay 13 $

    I hope this is of interest.

    Cheers,

    JohnGG

Re: Swapping names of list while keeping the contents as it is.
by zing (Beadle) on Aug 30, 2012 at 18:31 UTC
    Ahh!!!!! Got it SOLUTION
    cut -f2- -d ' ' list.txt| sed '1~2 s/^/bob /' | sed '2~2 s/^/jay /'

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://990815]
Approved by ww
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others examining the Monastery: (6)
As of 2024-04-19 15:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found