我需要在bash中只获得前两个“uname -r”命令的数字
常规输出的例子:
uname -r
3.5.0-18-generic
我期望使用魔术打击选项:
3.5
答案 0 :(得分:6)
假设你想要在第二个点之前的所有内容,这将做你想要的:
uname -r | cut -d. -f1-2
uname本身不支持削减输出,afaik。通过切割的管道将显示字段1和2(-f1-2
),由点(-d.
)
答案 1 :(得分:3)
uname -r | sed 's/\([0-9]\+\.[0-9]\+\)\..*/\1/'
答案 2 :(得分:2)
你也可以通过参数扩展来实现这个目标:
$ r="$(uname -r)"
$ echo ${r%.*}
3.5
${VAR%pat}
非贪婪地删除pat
末尾的VAR
。请注意pat
是一个glob模式,即dot表示“dot”,而star表示“any-number-of-chars”。