使用 Bash 解析 Hadoop 版本字符串

使用 Bash 解析 Hadoop 版本字符串

我们有这个 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'

相关内容