ファイルから列を削除するのに問題があります。
input.tsv
:
Otu1 otu2 otu3 otu4 otu5
1 2 5 9 3
8 9 8 4 2
ヘッダーがファイルにリストされている場合は、列を削除したいと思いますremove.txt
。たとえば、次のようになります。
otu2
otu3
結果は次のとおりです。
Otu1 otu4 otu5
1 9 3
8 4 2
どうすればいいですか?
答え1
Perlを使った例
Cols.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));
}
コマンドラインは次のように実行されます。
ヒント > perl RemoveCols.pl