如何在Bash脚本中提取hwinfo --disk输出里第二个磁盘的Device File值
从hwinfo输出中提取指定磁盘的Device File值
我来给你几个实用的方法,轻松提取编号为12的磁盘条目里的「Device File」对应值,并保存为变量:
方法1:使用awk推荐
awk处理这种分段的文本非常灵活,一行命令就能搞定:
target_device=$(hwinfo --disk | awk '/^12: None/{flag=1} flag && /Device File:/{print $3; exit}')
逻辑解释:
/^12: None/{flag=1}:当匹配到以12: None开头的行时,激活标记flag,表示进入了目标磁盘的条目范围flag && /Device File:/{print $3; exit}:在标记激活的状态下,找到包含「Device File:」的行,打印该行的第三列(也就是你要的/dev/xvdb),然后立即退出awk,避免处理后续无关内容
执行完命令后,你可以用echo $target_device验证结果。
方法2:使用sed
如果你更习惯sed,也可以这样写:
target_device=$(hwinfo --disk | sed -n '/^12: None/,/Attached to:/{/Device File:/s/.*: //p}')
逻辑解释:
-n:让sed只打印我们指定的内容/^12: None/,/Attached to:/:限定处理范围为从12号磁盘的起始行到该条目结尾的「Attached to」行/Device File:/s/.*: //p:在这个范围内找到「Device File」行,用正则替换掉行首到「: 」的所有内容,只保留后面的路径并打印
内容的提问来源于stack exchange,提问作者Yahav
相关产品推荐
相关产品推荐

