Я пытаюсь определить начальный сектор файла .img из скрипта bash, чтобы он был правильно смонтирован из скрипта. Я использовал команду file, чтобы легко найти Startsector - хотя я не уверен, как извлечь это число из вывода. Я думаю, что ответ заключается в использовании awk, но я не могу понять, как это сделать.
Вот вывод команды file для справки:
kemra102@kaon:~/Downloads$ file 2012-07-15-wheezy-raspbian.img
2012-07-15-wheezy-raspbian.img: x86 boot sector; partition 1: ID=0xc, starthead 130, startsector 8192, 114688 sectors; partition 2: ID=0x83, starthead 165, startsector 122880, 3665920 sectors, code offset 0xb8
kemra102@kaon:~/Downloads$
С sed или perl это немного проще, чем с awk. С sed: соответствует всей строке, ища partition 1
, затем startsector 1234
(или любую другую последовательность цифр) без ;
между ними. Замените всю эту строку только цифрой и напечатайте результат. Конечно, вы можете изменить partition 1
на partition 2
.
sed -n 's/^.*partition 1:[^;]* startsector \([0-9][0-9]*\).*$/\1/p'
С perl: искать подстроку, состоящую из partition 1
, за которой следует startsector 1234
без ;
между ними; сохранить цифры после startsector
в группе. Если есть совпадение, выведите цифры.
perl -l -ne '/partition 1:[^;]* startsector ([0-9]+)/ and print $1'
file 2012-07-15-wheezy-raspdian.img | \
grep -oP '(?<=startsector )[0-9]+' | \
sed -n '1p'
Если вы измените 1
на любое другое число в sed -n '1p'
, это даст вам другие случаи.