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

如何用正则表达式从/etc/redhat-release提取OS名称及主版本号

操作系统版本提取正则方案

可直接使用的正则表达式

完全匹配需求规则的正则如下:

^(Red Hat|CentOS(?: +(?:Linux|Stream))?) +.*release +(\d+)\..*$

Linux命令行环境下可以直接结合sed完成提取,命令如下:
sed -r 's/^(Red Hat|CentOS(?: +(?:Linux|Stream))?) +.*release +(\d+)\..*$/\1 \2/' /etc/redhat-release

捕获组工作逻辑

正则通过两个捕获组分别提取操作系统名称和主版本号,非捕获部分仅用于过滤冗余内容:

  • 第一个捕获组(Red Hat|CentOS(?: +(?:Linux|Stream))?):
    • 优先匹配开头的Red Hat字符串,命中后直接捕获,自动忽略后续Enterprise Linux Server等冗余描述
    • 若开头为CentOS,则继续向后匹配可选的「空格+Linux/Stream」后缀,将CentOS Linux/CentOS Stream完整作为捕获结果
    • 组内的?:标识为非捕获组,仅用来完成规则匹配,不会生成独立的捕获结果,避免产生多余分组
  • 中间段 +.*release +:匹配两个捕获组之间的所有冗余内容,包括多余的发行版描述字段、release关键字前后的空格
  • 第二个捕获组(\d+):匹配release关键字后的首个连续数字序列,也就是操作系统主版本号,后续的\..*匹配次版本号及之后的所有剩余内容,不纳入捕获范围

效果验证

对三个示例文本的提取结果完全符合要求:

  • 输入CentOS Linux release 7.9.28 (Core) → 输出CentOS Linux 7
  • 输入CentOS Stream release 8 → 输出CentOS Stream 8
  • 输入Red Hat Enterprise Linux Server release 7.5 (Maipo) → 输出Red Hat 7

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:45:03