Removendo colunas de acordo com uma lista em um arquivo

1

Eu tenho um problema com a remoção de colunas de um arquivo.

input.tsv :

Otu1    otu2    otu3    otu4    otu5
1   2   5   9   3
8   9   8   4   2

Eu gostaria de remover uma coluna se seu cabeçalho estiver listado no arquivo remove.txt , por exemplo:

otu2
otu3

Então o resultado seria:

Otu1    otu4    otu5
1   9   3
8   4   2

Como posso fazer isso?

    
por Nathalie 14.11.2016 / 21:03

1 resposta

0

Exemplo usando Perl

removeCols.pl:

#!/usr/bin/perl

my $file1="input.tsv";
my $file2="remove.txt";

open RFILE, $file2;
@cols=<RFILE>;

open INPUT, $file1;

#read header line, save indicies
my @header = split( /\t/, <INPUT> );

for my $i (0..$#header){
    if (grep(/$header[$i]/, @cols)){
        push @idx,$i;
        $header[$i] = undef;
    }
}
print join("\t",grep(defined,@header));


# loop remaining file
while(<INPUT>){
    my @line = split(/\t/, $_);
    $line[$_] = undef for (@idx);
    print join("\t",grep(defined,@line));
}

linha de comando é executada como tal:

prompt> perl removeCols.pl

    
por 14.11.2016 / 21:23

Tags