How to exchange two columns in a table?

Rudy Vener salt at panix.com
Sun Jan 7 01:30:05 UTC 2007


If there is only one tab between fields you can use PERL like so:

$ cat file | swap.pl > file2



Where swap.pl contains:

#/usr/bin/perl

while(<STDIN>)
{
chomp $_;
($col1,$col2) = split(/\t/,$_);
print "$col2\t$col1\n";
}
# end of swap.pl file


The above assumes  that swap.pl is executable. chmod 755 it  after editing. It also
assumes there are only two columns in the file. If there are more, e.g. 4 you will
ned to adjust the code accordingly, such as
($col1,$col2,$col3,$col4) = split(/\t/,$_);
and
print "$col2\t$col1\t$col3\t$col4\n";

or whichever columns you want to swap.

Rudy Vener
Pizza galaxy
http://www.pizzagalaxy.com



On Sat, Jan 06, 2007 at 11:14:40PM +0800, coscell at mail.batol.net wrote:
> Thank you! It's just a tab-delimited text file.
> 
> On Sat, 6 Jan 2007, Tim Chase wrote:
> 
> >I think you'll have to provide a few more details:
> >
> >1) where is the table?  In a spreadsheet?  In a database?  In a text-file?
> >
> >2) If it's a spreadsheet or database, what flavor? (Gnumeric? Siag?  SC? 
> >Oleo?  OpenOffice.org?  KOffice?  MySQL?  PostgreSQL?
> > SQLite? etc)
> >
> >3) If it's just a text file, how are columns determined?  Is it a CSV 
> >file? (and if so, how is character escaping/quoting done?) Is it a 
> >tab-delimited file?  Are the columns positional? (i.e. columns 1 through 
> >10 are the first field, 11 through 15 are the next, etc)
> >
> >With the extra details, it should be pretty easy to find a solution.
> >
> >-tim
> >
> >
> >
> >_______________________________________________
> >Blinux-list mailing list
> >Blinux-list at redhat.com
> >https://www.redhat.com/mailman/listinfo/blinux-list
> >
> 
> _______________________________________________
> Blinux-list mailing list
> Blinux-list at redhat.com
> https://www.redhat.com/mailman/listinfo/blinux-list




More information about the Blinux-list mailing list