#!/usr/bin/perl
use strict;
my $f1=shift;
open(F1,"<",$f1) || die "Couldn't open $f1: $!\n";
my $f2=shift;
open(F2,"<",$f2) || die "Couldn't open $f2: $!\n";
until (eof(F1) || eof(F2)) {
my @a = split /\t/,<F1>;
my @b = split /\t/,<F2>;
chomp($a[@a-1]);
# note: perl arrays start from 0, not 1
print join("\t",@a, @b) if (($a[1] >= $b[3]) && ($a[2] <= $b[4]));
}
Это открывает два аргумента имени файла, поскольку файл -обрабатывает F1
и F2
соответственно. Если какой-либо файл не открывается, он завершается с сообщением об ошибке.
Затем, пока ни один из них не достиг EOF (конца -файла -), он:
считывает строку за раз из каждого дескриптора файла -в отдельные массивы(@a
для F1 и @b
для F2 ).
Функция chomp()
удаляет завершающий символ новой строки(\n
)из последнего элемента массива @a
, чтобы предотвратить появление новой строки в середине любых выходных строк, где массивы соединяются.
Если массивы соответствуют вашим критериям ($a[1]>=$b[3] и $a[2]<=$b[4] ), он печатает оба массива как одну строку вывода., соединенные табуляцией в качестве разделителей полей.
Сохранить как, например. ibk.pl
, сделайте его исполняемым с помощью chmod +x ibk.pl
и запустите как:
$./ibk.pl file1 file2
NC_025345 11996 12085 KX932454.2 NC_025345.1 RefSeq gene 10337 16933 . + . ID=gene-NZ82_gp6;Dbxref=GeneID:20964336;Name=NZ82_gp6;gbkey=Gene;gene_biotype=protein_coding;locus_tag=NZ82_gp6
Это необходимо с LiveCD, смонтированная файловая система не может быть перемещена (ее размер можно изменить, но только "вправо" изменение размера "влево" означает копирование данных, и это невозможно сделать, когда устройство установлен ).
Итак, загрузитесь с Ubuntu LiveCD и с помощью GParted Раздел → Изменить размер/перемещение переместите и измените размер корневого раздела на свободное место.
Как и при любых других операциях с хранилищем, настоятельно рекомендуется сначала сделать резервную копию. Если что-то пойдет не так во время операции изменения размера/перемещения (, например сбой питания ), вы можете потерять данные.