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

如何用Shell Script提取HTML中</em>与</a>间的数值?

用Shell脚本提取指定标签间数值的方法

针对你提供的HTML片段,以下几种Shell工具组合可以提取</em>和</a>之间的数值4,519:

方法1:使用sed命令

sed适合处理行内文本的替换与提取,通过正则匹配目标区间:

echo "id='idusedMemory' alt='graph'/></em>4,519</a> Mb / 64,309 Mb&nbsp;&nbsp;&nbsp;</td><td>" | sed -n 's/.*<\/em>\(.*\)<\/a>.*/\1/p'

解释:

  • -n:仅输出匹配到的行
  • s/.*<\/em>\(.*\)<\/a>.*/\1/p:用正则匹配整行内容,捕获</em>和</a>之间的部分(\(.*\)为捕获组),最终替换为捕获到的内容并打印

方法2:使用grep(支持Perl正则)

如果你的grep支持-P参数(多数GNU grep版本都支持),可以用预查语法精准定位:

echo "id='idusedMemory' alt='graph'/></em>4,519</a> Mb / 64,309 Mb&nbsp;&nbsp;&nbsp;</td><td>" | grep -Po '(?<=<\/em>).*(?=<\/a>)'

解释:

  • -P:启用Perl兼容正则表达式
  • -o:仅输出匹配到的内容片段
  • (?<=<\/em>):正向预查,定位到</em>之后的位置
  • (?=<\/a>):反向预查,定位到</a>之前的位置
  • 中间的.*即为要提取的数值内容

方法3:使用awk分割字符串

通过awk的字段分割功能,分步截取目标内容:

echo "id='idusedMemory' alt='graph'/></em>4,519</a> Mb / 64,309 Mb&nbsp;&nbsp;&nbsp;</td><td>" | awk -F'</em>' '{print $2}' | awk -F'</a>' '{print $1}'

解释:

  • 第一个awk以</em>为分隔符,取分割后的第二个字段(即</em>之后的所有内容)
  • 第二个awk以</a>为分隔符,取分割后的第一个字段(即</a>之前的数值)

注意事项

  • 若HTML内容来自文件,将echo "..."替换为cat your_html_file.html即可
  • 如果HTML存在换行,需先用tr -d '\n'将多行合并为一行再处理,避免匹配失败

内容的提问来源于stack exchange,提问作者ROB ENGG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:25:18