You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 21:57:47