我想计算每行中NN
的出现次数,然后删除包含更多NN
次出现的行。我写了一个脚本来逐行计算出现次数,但它没有给出所需的输出。
Qcode B_32_ISO.GT B_45_ISO.GT B_63_ISO.GT B_72_ISO.GT B_85_ISO.GT B_89_ISO.GT B_9_I
NN NN NN NN NN NN NN NN NN NN NN NN NN NN
#!/usr/bin/perl
open( In, "$ARGV[0]" );
open( Out, ">$ARGV[1]" );
%count;
while ( $line = <In> ) {
chomp( $line );
if ( $line =~ /rs#/ ) {
print Out "$line\n";
next;
}
@arr = split( /\t/, $line );
for ( $i = 11; $i <= $#arr; $i++ ) {
$count{ $arr[$i] }++;
}
while ( my ( $key, $value ) = each( %count ) ) {
print "$key:$value\n";
}
}
close In;
close Out;
TT:2
NN:538
AC:2
AA:6
TT:2
NN:1070
AC:2
CC:6
AA:6
TT:3
CT:1
我想计算每一行的出现次数而不是所有行的求和。
答案 0 :(得分:0)
答案 1 :(得分:0)
这会计算一行中NN
的数量并跳过包含NN
的行:
use strict;
use warnings;
while (my $line = <DATA>) {
if (my $number_of_nn = (() = $line =~ /(NN)/g)) {
print "Number of NN is $number_of_nn\n";
}
else {
print $line;
}
}
__DATA__
Qcode B_32_ISO.GT B_45_ISO.GT B_63_ISO.GT B_72_ISO.GT B_85_ISO.GT B_89_ISO.GT B_9_I
NN NN NN NN NN NN NN NN NN NN NN NN NN NN