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다른 것보다 훨씬 간단합니다(2개의 명령 대 3개의 명령).

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

관련 정보