e-letter wrote:
Readers,
Hello,
I have a csv file (greater than 256 columns hence unable to open in spreadsheet) of the following format: column header1, column header2, column header3 1,0.0e0,0.0e0,5e-6 2,0.0e0,0.0e0,6e-7 3,0.0e0,0.0e0,0.0e0 I want to perform: "if column headerx contains only values of 0.0e0, delete the column (including the column header). How do I start please?
This may work for you: #!/usr/bin/perl use warnings; use strict; use Fcntl ':seek'; @ARGV = 'somefile.csv'; $^I = '.back'; my @headers = map 1, split /,/, <>, -1; my @keep = ( undef ) x @headers; while ( <> ) { chomp; my @fields = split /,/, $_, -1; for my $i ( 0 .. $#fields ) { $keep[ $i ] = $i if $fields[ $i ] ne '0.0e0'; } last if @headers == grep defined, @keep; } @keep = grep defined, @keep; seek ARGV, 0, SEEK_SET or die "Cannot seek on '$ARGV' $!"; while ( <> ) { chomp; print join( ',', ( split /,/, $_, -1 )[ @keep ] ), "\n"; } __END__ John -- Perl isn't a toolbox, but a small machine shop where you can special-order certain sorts of tools at low cost and in short order. -- Larry Wall -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/