首页 > 解决方案 > 如何从 linux 内核版本字符串或内核目录列表中提取版本号

问题描述

例如ls可能返回字符串 /boot/vmlinuz-5.9.12-100.fc32.x86_64

想要一个正则表达式工具来提取5.9.12-100

问题重复但附加主题 用于版本号解析的正则表达式

但因为如此,我无法添加我的答案......

标签: regex

解决方案


一种解决方案使用uname

$ uname -r
5.4.0-70-generic
$ uname -r | sed -re 's/(^[0-9]*\.[0-9]*\.[0-9]*-[0-9]*)(.*)/\1/'
5.4.0-70

另一个使用ls

$ ls -1 /boot/vmlinuz* | sed -re 's/(^[a-z/]*-)([0-9]*\.[0-9]*\.[0-9]*-[0-9]*)(.*$)/\2/'
5.4.0-67
5.4.0-70

推荐阅读