Слегка протестированный Perl-скрипт:
#!/usr/bin/env perl
use strict;
use warnings;
my $header = <>;
print $header;
my $query = '';
my @store = ();
LINE: while (<>) {
my ( $line, %data );
$line = $_;
chomp;
@data{qw/sr query score from to/} = split /\s+/;
if ( $data{query} eq $query ) {
for ( my $i = @store - 1 ; $i >= 0 ; $i-- ) {
my %odata = %{ $store[$i]->[1] };
if ( $odata{to} > $data{from} and $odata{from} < $data{to} ) {
# overlap
if ( $data{score} > $odata{score} ) { splice @store, $i, 1 }
else { next LINE }
}
}
push @store, [ $line, \%data ];
}
else {
for (@store) { print $_->[0] }
@store = ( [ $line, \%data ] );
$query = $data{query};
}
}
for (@store) { print $_->[0] }
Если вы добавите в виртуальную машину виртуальный USB-планшет, вам, вероятно, не придется иметь дело с явным захватом/разграблением. Но virt -менеджер позволяет вам изменить комбинацию захвата через Edit -> Preferences -> Console -> параметр Grab Keys
.