我在从文件中删除列时遇到问题。
input.tsv
:
Otu1 otu2 otu3 otu4 otu5
1 2 5 9 3
8 9 8 4 2
如果列的标题列在 file 中,我想删除该列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