我正在尝试从 bash 脚本中确定 .img 文件的起始扇区,以便可以从脚本中正确挂载它。我一直在使用文件命令轻松找到起始扇区 - 但是我不确定如何从输出中提取该数字。我认为答案在于使用 awk,但我无论如何也想不出如何做到这一点。
以下是文件命令的输出,供参考:
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$
答案1
使用 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'
答案2
file 2012-07-15-wheezy-raspdian.img | \
grep -oP '(?<=startsector )[0-9]+' | \
sed -n '1p'
如果您将其更改1
为其他任何数字,sed -n '1p'
它将为您提供其他出现的情况。