Вы можете сделать это с помощью Perl
, используя следующий метод:
$ perl -lane '
my($id, $uniq_id, $lower, $upper) = @F;
$h{$id}{$uniq_id}{MIN} = $lower;
$h{$id}{$uniq_id}{MAX} = $upper;
push @{$order{$id}}, $uniq_id;
}{
while(<STDIN>) {
chomp;
my($id, $number) = split;
print join "\t", $id, $number,
join(",", grep { $h{$id}{$_}{MIN} < $number and $h{$id}{$_}{MAX} > $number } @{$order{$id}})
|| qw/NA/;;
}
' data.intervals < data.posiitons
Выход:
1 4 NA
1 19 g1,g2,g3
1 36 NA
1 49 NA
1 90 g6,g7
2 1 NA
2 20 g9
2 89 NA
2 93 g11
2 120 g11
Работы:
%order
хранит порядок, в котором уникальные идентификаторы встречались для целей воспроизведения в том же порядке. OTW, порядок хэшей случайный. grep
должен выбрать уникальные идентификаторы, которые удовлетворяют ограничению числа, находящегося в диапазоне. В противном случае передается "NA"
. У меня были подобные проблемы раньше и почти каждый раз "Super Grub Disk" (или SGD2 )был полезным инструментом... (вы найдете его здесьhttps://www.supergrubdisk.org/)
Другим рабочим способом может быть запуск linux live cd (или usb )и редактирование конфигурационные файлы для GRUB вручную (, поскольку я совсем не уверен, что «обновление -grub» будет работать в этом случае ), чтобы отображать только Windows как запись (, а не только Ubuntu ).
Когда я использовал его в прошлый раз, Super Grub Disk смог полностью удалить GRUB и восстановить загрузчик Windows, что, я думаю, именно то, что вы хотели, исходя из того, что вы сказали... Так что я бы попробовал это лично. В противном случае, как уже предлагалось другими, использование диска восстановления Windows также может помочь.