Во-первых, вам необходимо сделать резервную копию ваших данных, для загрузки Windows вы можете использовать Super Grub2 Disk , который позволит вам загружать другую ОС, устаревшую или UEFI.
Поскольку GRUB не понимает таблицы разделов GPT, вам нужно создать раздел bios_grub
, а затем переустановить Grub, также необходимо установить os-prober
для обнаружения других ОС .
Примечание : Для загрузки GRUB с диска с разделами GPT в системе на основе BIOS требуется загрузочный раздел BIOS. Обратите внимание, что этот раздел не связан с точкой монтирования / boot и будет использоваться GRUB напрямую. Не создавайте на нем файловую систему и не монтируйте ее.
Что такое раздел bios_grub
?
Загрузочный раздел BIOS - это раздел на устройстве хранения данных, который GNU GRUB использует на устаревших персональных компьютерах на основе BIOS для загрузки операционной системы, когда фактическое загрузочное устройство содержит таблицу разделов GUID (GPT). Такой макет иногда называют загрузкой BIOS / GPT.
Почему?
Загрузочный раздел BIOS необходим, потому что GPT использует сектора диска, следующие сразу за основной загрузочной записью (MBR), для хранения фактической таблицы разделов, тогда как традиционная схема разделения на основе MBR не назначает их ни для каких специального назначения.В результате на GPT-дисках не хватает неиспользуемого места для хранения вторых ступеней загрузчиков; загрузчики обычно реализуются таким образом, что их код, хранящийся в MBR, которая не может содержать более 512 байт, работает как первая ступень, которая служит в первую очередь для загрузки более сложной второй ступени, которая, например, может считывать и загружать операционные ядро системы из файловой системы.
С POSIX-совместимым awk
:
awk -F, -v OFS=, '{sub(/.{6}$/, OFS "&", $2); print}'
С POSIX-совместимым sed
:
sed 's/^\([^,]*,[^,]*\)\([^,]\{6\}\)/\1,\2/'
Они изменяют строки, только если второе поле имеет длину не менее 6 символов. (обратите внимание, что он с радостью изменит 111,123456,333
на 111,,123456,333
, оставив второе поле пустым).
Подход KISS с awk
:
$ awk -F, '{l=length($2); if (l>6) {$2=substr($2,1,l-6) OFS substr($2,l-5)}} 1' OFS=, file
3102017,90,131112,0,740
3022017,8,903944,90,0
3092017,127,037191,475,0
perl -pe 's/(,.*?,)/$1 =~ s!......,!,$&!r /e' x.csv
,.*?,
) на ... =~ s! ...! ...!r
) из последних 6 цифр (......
) на них и и ,
С реализацией sed
с поддержкой расширенных регулярных выражений предполагается не менее 6 символов во 2-м столбце для всех строк
$ sed -E 's/,([^,]*)([^,]{6}),/,\1,\2,/' ip.csv
3102017,90,131112,0,740
3022017,8,903944,90,0
3092017,127,037191,475,0
-E
для расширенных регулярных выражений , в некоторых реализациях требуется -r
вместо ,([^,]*)([^,]{6}),
будет соответствовать ,
2-й столбец и ,
,\1,\2,
заменить по желанию С perl
, так как sed
и awk
уже заняты:
perl -F, -lpe 'splice @F, 1, 1, ($F[1] =~ m/^(\d+)(\d{6})$/g); $_ = join ",", @F' file
С vim
, просто для удовольствия:
:%s/\m,\d*\zs\ze\d\{6},/,/