Использование awk или подобного, чтобы найти следующее слово в выводе другой команды

Я пытаюсь определить начальный сектор файла .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$ 
4
задан 9 August 2012 в 00:23

2 ответа

С 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'
0
ответ дан 9 August 2012 в 00:23
file 2012-07-15-wheezy-raspdian.img     | \
    grep -oP '(?<=startsector )[0-9]+'  | \
    sed -n '1p'

Если вы измените 1 на любое другое число в sed -n '1p', это даст вам другие случаи.

0
ответ дан 9 August 2012 в 00:23

Другие вопросы по тегам:

Похожие вопросы: