如何从以下命令中仅获取前两位数字
我的目标是获得hadoop基本版本
hdp-select | grep hadoop-client | awk '{print $NF}'
2.6.0.3-8
预期成绩:
2.6
答案1
使用小数点切割打印函数在awk
awk '{printf "%.1f\n", $NF}'
答案2
与单awk:
hdp-select | awk '/hadoop-client/{ printf("%.1f\n",$NF); exit }'
2.6
/hadoop-client/
- 只考虑带有hadoop-client
关键字的行printf("%.1f\n",$NF)
- 将版本号格式化为简单浮点数exit
- 立即停止处理(节省资源)
答案3
你可以使用 coreutils cut:
echo 2.6.0.3-8 | cut -d . -f 1,2
输出:
2.6
答案4
XX.YY
因为您想获取基本版本号,所以当情况如下时,命令应该能够获取至少版本号2.10.0.3.3-8
?
下面的grep
命令仅返回*.*
版本的格式。
grep -Po 'hadoop-client - \K[1-9]+\.[0-9]+(?=.*)' <(hdp-select)
2.6
一个测试:
grep -Po 'hadoop-client - \K[1-9]+\.[0-9]+(?=.*)' <<<"hadoop-client - 21.61.0.3-8"
21.61