Загрузите Linux и используйте dd
.
dd if=/dev/zero of=/dev/hda bs=512 count=1
Это сотрет MBR, а это все, что вам нужно. Когда вы устанавливаете Windows, она увидит пустой загрузочный сектор и создаст GPT.
Это потому, что вы вводите свой массив x
в $1
, который является одним и тем же chr1
для всех строк в первом файле. Таким образом, в каждой строке содержимое массива индексируется на основе одного и того же ключа и перезаписывается значением в $2
. Итак, к концу файла у вас есть одна запись в массивеx['chr1']=744200
Вам нужно сохранить строку уникально. Сохраните ключ как кортеж $1 FS $2
и измените свою логику на
awk 'NR == FNR { x[$1 FS $2] = $2; next }{
for (key in x) {
split(key, arr)
if (arr[2] > $2 && arr[2] < $3)
print arr[2], $0
else {
print arr[2], "out of range"
}
}
}' file1 file2
Чтобы улучшить логику выполнения проверки диапазона только в строках, где первый столбец одинаков для обоих файлов, добавьте условие в if
как
if ( (arr[2] > $2 && arr[2] < $3) && ( $1 == arr[1] ) )
Предполагая, что диапазоны file2 не перекрываются, как в вашем примере:
$ cat tst.awk
NF==3 { beg=$2; end=$3; all=$0; next }
{ print $2, ( ($2 >= beg) && ($2 <= end) ? all : "out of range" ) }
$ sort -sk2n file2 file1 | awk -f tst.awk
69509 chr1 69091 70005
69511 chr1 69091 70005
71000 out of range
358112 chr1 358070 358183
586874 chr1 586842 586955
744200 chr1 744195 744343
Он использует сортировку GNU для-s
(«стабильной сортировки» ), чтобы гарантировать, что запись file2 печатается перед записью file1
в случае идентичных $2
s.