2

我只需要在 bash 中获取“uname -r”命令的前两个数字

常规输出示例:

uname -r
3.5.0-18-generic

我期望使用魔术 bash 选项:

3.5
4

3 回答 3

6

假设您想要第二个点之前的所有内容,这将满足您的需求:

uname -r | cut -d. -f1-2

uname 本身不支持削减输出,afaik。贯穿切口的管道将显示字段 1 和 2 ( ),由点 ( )-f1-2分隔-d.

于 2012-11-12T09:28:59.330 回答
3
uname -r | sed 's/\([0-9]\+\.[0-9]\+\)\..*/\1/'
于 2012-11-12T09:28:46.847 回答
2

您还可以通过参数扩展来完成此操作:

$ r="$(uname -r)"
$ echo ${r%.*}
3.5

${VAR%pat}非贪婪地patVAR. 请注意,这pat是一个 glob 模式,即 dot 仅表示“点”,star 表示“任意数量的字符”。

于 2012-11-12T09:38:33.327 回答