Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

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

by zing (Beadle)
on Aug 30, 2012 at 18:25 UTC ( #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}'

Comment on Swapping names of list while keeping the contents as it is.
Select or Download Code
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 /'
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 (Abbot) 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

Log In?
Username:
Password:

What's my password?
Create A New User
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? | Other CB clients
Other Users?
Others rifling through the Monastery: (6)
As of 2014-12-26 12:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (171 votes), past polls