Une duas tabelas com base em valores que não são de compartilhamento na coluna escolhida

1

Eu tenho usado "Perl para biólogos com pouco conhecimento de codificação de computador" do site chamado Scriptome (Harvard). Ele oferece ótimos lineamentos Perl para obter as funções desejadas que são executadas no comando de linha Unix. Um script muito útil que eu uso é intitulado: "Junte duas tabelas com base em colunas que compartilham um valor (merge_lines_based_on_shared_column)" Isso funciona muito bem, mas às vezes eu quero exatamente o oposto. IE: a geração de tabelas onde os valores dados de duas colunas não correspondem. Para o primeiro, copio / colo o código que eles fornecem abaixo. Eu ficaria muito grato se alguém puder me ajudar. Felicidades Daniel.

perl -e '$col1=1;
        $col2=0;
        ($f1,$f2)=@ARGV;
        open(F2,$f2);
        while (<F2>) {
            s/\r?\n//;
            @F=split /\t/, $_;
            $line2{$F[$col2]} .= "$_\n"
        };
        $count2 = $.;
        open(F1,$f1);
        while (<F1>) {
            s/\r?\n//;
            @F=split /\t/, $_;
            $x = $line2{$F[$col1]};
            if ($x) {
                $num_changes = ($x =~ s/^/$_\t/gm);
                print $x;
                $merged += $num_changes
            }
        } warn "\nJoining $f1 column $col1 with $f2 column $col2\n"
            . "$f1: $. lines\n"
            . "$f2: $count2 lines\n"
            . "Merged file: $merged lines\n";' Input-file1.txt Input-file2.txt > Merge-file.txt
    
por Daniel Harari 24.07.2017 / 17:30

0 respostas