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

もう1つはsed他のものよりはるかに簡単です(2つのコマンド対3つのコマンド)。

hdp-select | sed -n 's/hadoop-client - \(.*\)-.*/\1/;s/\.//gp'

関連情報