如何从spark-submit --version输出中提取目标HDP版本2.6.4.0-91
从spark-submit --version输出提取HDP版本号的可行方法
这里有几个靠谱的方法,能精准从spark-submit --version的输出里提取到你要的HDP版本号2.6.4.0-91,避开Spark的2.2.0版本:
方法一:用grep+sed组合提取
如果spark-submit --version的输出里版本串是类似version 2.2.0.2.6.4.0-91这种格式,可以用下面的命令:
spark-submit --version | grep -oP 'version \K.*' | sed 's/2\.2\.0\.//'
grep -oP 'version \K.*':用Perl正则匹配,\K会忽略掉前面的version,只提取后面的完整版本串(也就是2.2.0.2.6.4.0-91)sed 's/2\.2\.0\.//':把串里的2.2.0.替换为空,剩下的就是目标HDP版本号2.6.4.0-91
方法二:用awk分割提取
同样针对组合版本串的场景,awk的分割功能也能轻松搞定:
spark-submit --version | awk '/version/ {split($2, arr, /2\.2\.0\./); print arr[2]}'
/version/:定位到包含版本信息的行split($2, arr, /2\.2\.0\./):把行里的第二个字段(版本串)用2.2.0.作为分隔符,拆分成数组arrprint arr[2]:数组的第二个元素就是我们要的2.6.4.0-91
方法三:用grep直接匹配HDP版本格式
HDP版本号的格式是x.x.x.x-xx(四段数字加横杠加数字),和Spark的2.2.0(三段数字)格式不同,我们可以直接用正则匹配这个独特格式:
spark-submit --version | grep -oP '\d+\.\d+\.\d+\.\d+-\d+'
\d+\.\d+\.\d+\.\d+-\d+:这个正则正好匹配2.6.4.0-91这种四段加横杠的版本格式,直接提取就能得到目标值,完全不会误匹配到Spark的2.2.0
这些方法都比单纯用ls /etc/hadoop/ | grep [0-9]严谨得多,能避免其他含数字目录的干扰。
内容的提问来源于stack exchange,提问作者enodmilvado
相关产品推荐
相关产品推荐

