我们有这个 CLI 语法
hdp-select | grep hadoop-client
hadoop-client - 2.6.4.0-91
最终目标是获得数字,例如:
2640
我们捕获最后一个数字并删除-
并删除.
所以我做了
hdp-select | grep hadoop-client | awk '{print $3}' | sed s'/-/ /g' | awk '{print $1}' | sed s'/\.//g'
2640
但这是丑陋的解决方案
我很高兴知道其他优雅的解决方案
答案1
与 sed
hdp-select | sed '/^hadoop-client - /!d;s///;s/-.*//;s/\.//g'
答案2
单优化解决方案awk
程序:
hdp-select | awk -F'-' '/^hadoop-client/{ gsub(/[[:space:].]+/, "", $3); print $3; exit }'
输出:
2640
答案3
你可以在 bash 中轻松做到这一点:
input='2.6.4.0-91'
input=${input%-*}
input=${input//./}
echo "$input"
2640
答案4
另一个sed
,可以说比另一个更简单(两个命令与三个命令):
hdp-select | sed -n 's/hadoop-client - \(.*\)-.*/\1/;s/\.//gp'