파일에서 열을 제거하는 데 문제가 있습니다.
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