You need to enable JavaScript to run this app. 如何在Bash中用grep+正则处理hdparm输出得到指定格式测速结果
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中用grep+正则处理hdparm输出得到指定格式测速结果

实现方案

以下两种方案都可以直接得到你需要的格式化输出:

方案1:单awk命令实现(更简洁高效,推荐)

不需要额外管道拼接grep,单条awk即可完成字段提取和格式化输出:

sudo hdparm -tT /dev/xvda1 | awk '/^\/dev\// {dev=$0} /cached reads/ {cache=$11} /buffered disk reads/ {buf=$11} END {printf "%s %s MB/sec, %s MB/sec\n", dev, cache, buf}'

逻辑说明:

  • 匹配以/dev/开头的行,存储为设备名变量dev
  • 匹配缓存读取结果行,提取第11个字段(即等号后的数值)存为cache
  • 匹配缓冲磁盘读取结果行,提取对应数值存为buf
  • 最终按要求的格式拼接输出

方案2:基于现有grep逻辑改造

如果要沿用你已经写好的正则提取逻辑,可以用数组存储提取结果后拼接输出:

# 先定义目标分区
TARGET_DEV="/dev/xvda1"
# 提取两个数值存入数组
SPEED_VALS=($(sudo hdparm -tT "$TARGET_DEV" | grep -Po '.* = \K[0-9.]+'))
# 格式化输出
echo "$TARGET_DEV: ${SPEED_VALS[0]} MB/sec, ${SPEED_VALS[1]} MB/sec"

注意:这里优化了你原来的正则,把.* \K改为.* = \K,避免误匹配到行内其他数字,提取结果更稳定

两种方案的输出结果都为:
/dev/xvda1: 6320.55 MB/sec, 197.12 MB/sec

内容的提问来源于stack exchange,提问作者Luca Sepe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 20:42:03